无法编译使用std :: io的代码 - `std :: io`中没有`File`

She*_*rMM 2 rust

我是Rust的新手,我只是想通过从文本文件中执行基本的逐行读取来熟悉io库.我试图编译的例子直接来自网站.

use std::io::BufferedReader;
use std::io::File;

fn main() {
    let path = Path::new("file_test.txt");
    let mut file = BufferedReader::new(File::open(&path));
    for line in file.lines() {
        print!("{}", line.unwrap());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用rustc编译它时,这些是我收到的错误:

io_test.rs:1:5: 1:28 error: unresolved import `std::io::BufferedReader`. There is no `BufferedReader` in `std::io`
io_test.rs:1 use std::io::BufferedReader;
                 ^~~~~~~~~~~~~~~~~~~~~~~
io_test.rs:2:5: 2:18 error: unresolved import `std::io::File`. There is no `File` in `std::io`
io_test.rs:2 use std::io::File;
                 ^~~~~~~~~~~~~
error: aborting due to 2 previous errors
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu 14.04,我不知道这是否是问题的一部分.我非常感谢任何帮助.也许这只是我的一些简单错误或错误.

Dan*_*ath 9

有些事情需要注意:

  • BufferedReader不存在,只有BufReader.
  • std::io::File实际上是std::fs::File.
  • Path 导入丢失.
  • 打开File可能会失败并出现错误,必须进行处理或解包.在一个小脚本unwrap是好的,但这意味着如果文件丢失您的程序中止.
  • 读取行不是一个可变操作,因此编译器会警告你它是不必要的可变的.
  • 要使用lines你需要导入use std::io::File.

完成的代码:

  use std::io::{BufReader,BufRead};
  use std::fs::File;
  use std::path::Path;

  fn main() {
      let path = Path::new("file_test.txt");
      let file = BufReader::new(File::open(&path).unwrap());
      for line in file.lines() {
          print!("{}", line.unwrap());
      }
  }
Run Code Online (Sandbox Code Playgroud)