以下内容无法编译。 使这项工作的规范方法是什么?
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
在您的示例中,line
是一个Result
,当您使用?
时会移动它(但是在您解开其内容后,我们真的需要Result
吗???(。为了缓解您的问题,让我们在同名的局部变量中隐藏Result
的值。
for line in reader.lines() {
let line = line?;
if line.contains(&args.pattern) {
println!("{}", line);
}
}