Với việc Rust tương đối mới, tôi đã thấy quá nhiều cách đọc và ghi tệp. Nhiều đoạn cực kỳ lộn xộn mà ai đó đã đưa ra cho blog của họ và 99% các ví dụ tôi đã tìm thấy (ngay cả trên Stack Overflow) là từ các bản dựng không ổn định không còn hoạt động. Bây giờ Rust đã ổn định, một đoạn mã đơn giản, dễ đọc, không hoảng loạn để đọc hoặc ghi tệp là gì?
Đây là lần gần nhất tôi có được thứ gì đó hoạt động trong việc đọc tệp văn bản, nhưng nó vẫn không biên dịch mặc dù tôi khá chắc chắn rằng tôi đã bao gồm mọi thứ tôi nên có. Điều này dựa trên đoạn trích tôi tìm thấy trên Google+ của tất cả các địa điểm và điều duy nhất tôi đã thay đổi là cái cũ BufferedReader
bây giờ chỉ là 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);
}
}
Trình biên dịch phàn nàn:
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() {
|> ^^^^^
Tóm lại, điều tôi đang tìm kiếm là:
- ngắn gọn
- khả năng đọc
- bao gồm tất cả các lỗi có thể
- không hoảng sợ
std::io::Read
), lưu ý rằng trong Rust, bạn phải nhập các đặc điểm bạn muốn sử dụng một cách rõ ràng ; do đó, ở đây bạn đang thiếu một use std::io::Read
(có thể là use std::io::{Read,BufReader}
để kết hợp hai cách sử dụng lại với nhau)