考虑以下内容:
loop {
let data = match something() {
Err(err) => {
warn!("An error: {}; skipped.", err);
continue;
},
Ok(x) => x
};
let data2 = match something_else() {
Err(err) => {
warn!("An error: {}; skipped.", err);
continue;
},
Ok(x) => x
};
// and so on
}
如果我不需要将ok-value分配给data
,我会使用if let Err(err) = something()
,但是是否有一种快捷方式可以避免在这种典型场景中复制/粘贴Err/Ok分支的代码?是否有类似if let
的东西也会返回ok-value。
let data
和continue
,然后只需要将 "other stuff" 放在Ok(x) =>
分支里。 - sepp2kResult
这样的结构的意义,它强制代码检查错误。如果有什么可以绕过这个的东西,那还有什么意义呢?在Rust中,这种结构非常常见,所以使用?
来避免重复代码。只有在测试或主函数中,你可以使用.unwrap()
或.expect()
。 - Stargateurif let
,因为它实际上是在寻求一种替代语言结构的方法。 - MutantOctopusResult
的方法是使用其中一个推导式库,例如 map_for 或 mdo。(注意:我是map_for
的作者) - Jmb