вторник, 16 июня 2015 г.

Файлы, ошибки...

Пробую создать файл как в примере:

use std::io::prelude::*;
use std::fs::File
pub fn write() {
 let mut f = try!(File::create("foo.txt"));
} 

Получаю ошибку "error: mismached types". Возвращается тип core::result::Result вместо юнита ().

Оказывется, макрос try! может вернуть такой тип и он будет возвращаемым типом функции write.

https://doc.rust-lang.org/stable/std/result/

Рабочим является такой вариант:

use std::io;
use std::fs;

pub fn write() -> io::Result<()> {

    let mut f = try!(fs::File::create("foo.txt"));
    Ok(())

}


Без точки с запятой после Ok(). Файл создался в корневой папке проекта.

------------
PS
Оставлю эту заметку как пример того, что начинать программировать на новом языке не стоит с изучения документации стандартной библиотеки. Лучше познакомиться с основными понятиями по видео и почитать книжки, в которых показано, как следует сочетать конструкции языка между собой.