例如:
fn foo() -> Option<()> {
// ...
}
fn bar() -> Option<()> {
if let None = foo() { // <---- here
return None;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将 if 语句更改为:
if None == foo()
Run Code Online (Sandbox Code Playgroud)
它也有效。
可以使用a == b代替if let a = b吗?
回应和扩展Magnus Hoff 的观点,我只if let在我关心与之匹配的值时使用。在这个例子中,我会使用类似的东西Option::is_none来进一步强调我不在乎:
if foo().is_none() {
Run Code Online (Sandbox Code Playgroud)
正如fjh 指出的那样,这具有回避包装T实现要求的微小好处。PartialEq
然而,根据我的经验,这种特殊的结构很少见,因为通常你想在这种Some情况下做一些事情。一旦你有多个分支,我升级到一个match语句。
| 归档时间: |
|
| 查看次数: |
1941 次 |
| 最近记录: |