Rust nispeten yeni olduğundan, dosya okuma ve yazmanın çok fazla yolunu gördüm. Birçoğu, blogları için birinin oluşturduğu son derece dağınık snippet'ler ve bulduğum örneklerin% 99'u (Stack Overflow'da bile) artık çalışmayan kararsız yapılardan. Rust artık kararlı olduğuna göre, dosyaları okumak veya yazmak için basit, okunabilir, panik yapmayan bir pasaj nedir?
Bu, bir metin dosyasını okuma açısından işe yarayan bir şeye en yakın olanıdır, ancak sahip olmam gereken her şeyi dahil ettiğimden oldukça emin olsam da hala derlemiyor. Bu, Google + 'da her yerde bulduğum bir parçacığa dayanıyor ve değiştirdiğim tek şey, eskisinin BufferedReader
artık sadece 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);
}
}
Derleyici şikayet ediyor:
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() {
|> ^^^^^
Özetlemek gerekirse, aradığım şey:
- kısalık
- okunabilirliği
- olası tüm hataları kapsar
- panik yapmaz
std::io::Read
) ile ilgili olarak, Rust'ta kullanmayı beklediğiniz özellikleri açıkça içe aktarmanız gerektiğini unutmayın ; bu yüzden burada use std::io::Read
bir use std::io::{Read,BufReader}
eksiksiniz (iki kullanımı bir araya getirmek için bir olabilir)