无法编译使用std :: io的代码 - `std :: io`

时间:2015-04-27 05:48:12

标签: 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());
    }
}

当我尝试使用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

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

3 个答案:

答案 0 :(得分: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());
      }
  }

答案 1 :(得分:3)

除了llogiq所说的

  • use std::io::BufferedReader => use std::io::{BufReader, BufRead}
  • use std::io::File => use std::fs::File
  • File::open返回Result,因此您可能需要unwrap例如

playpen link ...因为unwrap在未知档案上而感到恐慌

答案 2 :(得分:1)

您可能想要导入std::fs::Filestd::io::BufReader(您还需要在代码中将BufferedReader更改为BufReader