更清楚的方法将文件的内容作为字符串在Rust中?

时间:2014-12-14 22:33:49

标签: file-io rust

当我第一次潜入Rust时,我开始编写代码将文件的内容转储为字符串,以便以后处理(现在我只是打印出来)

有比现在更清洁的方法吗?似乎我不得不对它过于冗长,但我没有看到任何好的方法来清理它

use std::io;
use std::io::File;
use std::os;
use std::str;

fn main() {
    println!("meh");
    let filename = &os::args()[1];
    let contents = match File::open(&Path::new(filename)).read_to_end() {
        Ok(s) => str::from_utf8(s.as_slice()).expect("this shouldn't happen").to_string(),
        Err(e) => "".to_string(),
    };
    println!("ugh {}", contents.to_string());
}

1 个答案:

答案 0 :(得分:14)

  

编者注:审核the linked duplicate以获得更简洁/更清晰答案的维护答案。

Read::read_to_string是我所知道的最短的:

use std::io::prelude::*;
use std::fs::File;

fn main() {
    let mut file = File::open("/etc/hosts").expect("Unable to open the file");
    let mut contents = String::new();
    file.read_to_string(&mut contents).expect("Unable to read the file");
    println!("{}", contents);
}

必须考虑失败案例,Rust喜欢放在前面和中心位置。