Rust读取文件

时间:2017-06-03 05:37:54

标签: file io compiler-errors rust

我试图在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 runrustc 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);
   |          ^^^^^^^^^^^^^^

1 个答案:

答案 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,并提供错误消息,具体取决于操作是否成功。