Rust가 비교적 새롭기 때문에 파일을 읽고 쓰는 방법이 너무 많습니다. 많은 사람들이 누군가 블로그에 올린 매우 지저분한 스 니펫이며, 내가 찾은 예제의 99 % (스택 오버플로에서도)는 더 이상 작동하지 않는 불안정한 빌드에서 온 것입니다. 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() {
|> ^^^^^
요약하면, 내가 찾고있는 것은 :
- 짧음
- 가독성
- 가능한 모든 오류를 다룹니다
- 당황하지 않습니다
std::io::Read
) 와 관련하여 Rust에서는 명시 적 으로 사용할 것으로 예상되는 특성을 가져와야합니다 . 그리하여 여기에 use std::io::Read
( use std::io::{Read,BufReader}
두 용도를 합치기위한 a 일 수 있음 )