在此代码中,在调用
?
后添加 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
。所以你可能想保留它。