Rust中如何用单表达式处理Option的false判定场景?
Rust 用单表达式实现Option的条件判断需求
你要的通用单表达式写法有两种常用方案,都不需要依赖临时默认值:
方案1:map + unwrap_or(false)
if formula_chars.peek().map(|c| c.is_lowercase()).unwrap_or(false) { todo!() }
逻辑说明:
peek()返回Option<&char>,通过map将内部字符转换为判断结果(这里是is_lowercase()的布尔值)- 若原 Option 是
None,map会返回None,再用unwrap_or(false)将None转为false - 最终表达式在「原 Option 为 None」或「判断结果为 false」时返回 false,完全符合需求
方案2:filter + is_some()
if formula_chars.peek().filter(|c| c.is_lowercase()).is_some() { todo!() }
逻辑说明:
filter会保留满足条件(is_lowercase()为 true)的Some值,否则将其转为None- 最后用
is_some()判断是否存在有效结果,同样能实现你的要求
这两种写法都是通用的,不管后续要替换成什么判断逻辑,只需要修改闭包内的代码即可,不需要像之前那样找特定的默认值来凑逻辑。
内容的提问来源于stack exchange,提问作者Pioneer_11
相关产品推荐
相关产品推荐

