我想遍历一个
Option
列表。如果其中有一个值,我想返回一个错误。这里有一个人为制造的例子: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中应该使用哪种形式:带分号还是不带分号?编译器都接受并似乎产生相同的结果。
如果 let Some(value) = options.iter().flatten().next() { return Err(value); }
- Shepmaster