如何移除这段Rust代码中的else分支?
移除else分支的两种方法
方法一:使用matches!宏直接判断
通过matches!宏检查错误是否不属于CustomEnum::NotFound变体,若是则直接返回错误,无需else分支:
if let Err(err) = something.command(name).await { if !matches!(err, CustomEnum::NotFound(_)) { return Err(err); } }
方法二:反向匹配if let
也可以通过两次if let分别匹配需要忽略的错误和需要返回的错误,同样避免else分支:
if let Err(err @ CustomEnum::NotFound(_)) = something.command(name).await { // 忽略该错误,无需处理 } else if let Err(err) = something.command(name).await { return Err(err); }
第一种方法更简洁,仅需一次异步调用,推荐使用。
内容的提问来源于stack exchange,提问作者Fred Hors
相关产品推荐
相关产品推荐

