0

以下不编译。使这项工作的规范方法是什么?

let file = File::open(&args.path)?;
let reader = BufReader::new(file);

for line in reader.lines() {
    if line?.contains(&args.pattern) {
        println!("{}", line?);
    }
}

为了完整起见,这是错误消息:

34 |      println!("{}", line?);
   |                     ^^^^ value used here after move
4

1 回答 1

5

在您的示例line中是 a Result,它在您使用时被移动(但是在您打开它的内容之后?我们真的需要???)。Result为了缓解您的问题,让我们在同名的局部变量中隐藏的值。Result

for line in reader.lines() {
    let line = line?;
    if line.contains(&args.pattern) {
        println!("{}", line);
    }
}
于 2020-06-20T18:55:12.057 回答