Dengan Rust yang relatif baru, saya telah melihat terlalu banyak cara membaca dan menulis file. Banyak cuplikan sangat berantakan yang dibuat seseorang untuk blog mereka, dan 99% contoh yang saya temukan (bahkan di Stack Overflow) berasal dari bangunan tidak stabil yang tidak lagi berfungsi. Sekarang Rust stabil, apa itu potongan sederhana, mudah dibaca, tidak panik untuk membaca atau menulis file?
Ini adalah hal terdekat yang saya dapatkan dengan sesuatu yang berfungsi dalam hal membaca file teks, tetapi masih belum kompilasi meskipun saya cukup yakin saya sudah memasukkan semua yang harus saya miliki. Ini didasarkan dari cuplikan yang saya temukan di Google+ dari semua tempat, dan satu-satunya hal yang saya ubah adalah bahwa yang lama BufferedReader
sekarang hanya 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);
}
}
Kompiler mengeluh:
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() {
|> ^^^^^
Singkatnya, yang saya cari adalah:
- keringkasan
- keterbacaan
- mencakup semua kemungkinan kesalahan
- tidak panik
std::io::Read
), perhatikan bahwa di Rust Anda harus mengimpor sifat-sifat yang Anda harapkan akan digunakan secara eksplisit ; jadi di sini Anda kehilangan sebuah use std::io::Read
(yang bisa menjadi use std::io::{Read,BufReader}
untuk menyatukan kedua kegunaan bersama)