?
在这段代码中,在调用后添加运算符和不添加运算符有什么区别read_to_string()
?为什么两者都有效=如果此调用失败会发生什么?
fn chaining() -> Result<String, std::io::Error> {
let mut username = String::new();
File::open("fake.txt")?.read_to_string(&mut username)?; // <- removing ? here also works
Ok(username)
}
如果删除该
?
运算符,则读取文件时的错误将被忽略(尽管编译器会警告您)。如果保留它,则带有 的函数将返回错误Err
。因此您可能希望保留它。至于
String
如果忽略错误会发生什么,的文档read_to_string()
指的是的文档read_to_end()
,其中说明了以下内容: