【发布时间】:2020-06-29 12:09:03
【问题描述】:
我想遍历Options 的列表。如果其中一个有值,我想返回一个错误。这是一个人为的例子:
fn test(options: &[Option<u8>]) -> Result<(), &u8> {
for option in options {
match option {
None => (),
Some(value) => {
// do some stuff here, so I can't just go
// Some(value) => return Err(value),
return Err(value); // this semicolon is optional
}
}
}
Ok(())
}
添加另一个分号会导致错误,但删除分号不会。
为什么return语句后面的分号是可选的?
在惯用的 Rust 中应该使用哪种形式:分号还是不使用分号?两者都被编译器接受并且似乎产生了相同的结果。
【问题讨论】:
-
FWIW —
if let Some(value) = options.iter().flatten().next() { return Err(value); }
标签: rust