我试图在enable.txt
的同一个目录中读取名为main.rs
的文件,我的代码如下:
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
use std::error::Error;
fn main() {
let path = Path::new("enable.txt");
let display = path.display();
let mut file = File::open(&path);
let mut contents = String::new();
file.read_to_string(&mut contents);
println!("{}", contents);
}
当我使用cargo run
或rustc src/main.rs
编译它时,我收到以下错误消息:
error: no method named `read_to_string` found for type `std::result::Result<std::fs::File, std::io::Error>` in the current scope
--> src/main.rs:10:10
|
10 | file.read_to_string(&mut contents);
| ^^^^^^^^^^^^^^
答案 0 :(得分:1)
问题是File::open()
返回std::result::Result<std::fs::File, std::io::Error>
,需要以某种方式解包才能访问该文件。我喜欢这样做的方式是使用expect()
这样:
...
fn main() {
...
let mut file = File::open(&path).expect("Error opening File");
...
file.read_to_string(&mut contents).expect("Unable to read to string");
...
}
这将返回预期值或panic
,并提供错误消息,具体取决于操作是否成功。