在这次调用中添加`?`操作符和不添加它有什么区别?

问题描述 投票:0回答:1

在此代码中,在调用

?
后添加
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)
}
rust error-handling operators
1个回答
0
投票

如果删除

?
运算符,读取文件时的错误将被默默忽略(尽管编译器会警告您)。如果保留它,错误将从函数返回并带有
Err
。所以你可能想保留它。

© www.soinside.com 2019 - 2024. All rights reserved.