Когда Rust был сравнительно новым, я видел слишком много способов чтения и записи файлов. Многие из них чрезвычайно беспорядочные фрагменты, которые кто-то придумал для своего блога, а 99% примеров, которые я нашел (даже в Stack Overflow), - это нестабильные сборки, которые больше не работают. Теперь, когда Rust стабилен, что такое простой, читаемый, не панирующий фрагмент для чтения или записи файлов?
Это ближе всего к тому, что работает с точки зрения чтения текстового файла, но оно все еще не компилируется, хотя я уверен, что включил все, что у меня было. Это основано на фрагменте, который я нашел в Google+ из всех мест, и единственное, что я изменил, это то, что старый BufferedReader
теперь просто BufReader
:
use std::fs::File;
use std::io::BufReader;
use std::path::Path;
fn main() {
let path = Path::new("./textfile");
let mut file = BufReader::new(File::open(&path));
for line in file.lines() {
println!("{}", line);
}
}
Компилятор жалуется:
error: the trait bound `std::result::Result<std::fs::File, std::io::Error>: std::io::Read` is not satisfied [--explain E0277]
--> src/main.rs:7:20
|>
7 |> let mut file = BufReader::new(File::open(&path));
|> ^^^^^^^^^^^^^^
note: required by `std::io::BufReader::new`
error: no method named `lines` found for type `std::io::BufReader<std::result::Result<std::fs::File, std::io::Error>>` in the current scope
--> src/main.rs:8:22
|>
8 |> for line in file.lines() {
|> ^^^^^
Подводя итог, я ищу:
- Краткость
- читабельность
- охватывает все возможные ошибки.
- не паникует