我想知道检查q: Option<String>我拥有的 a 是否具有特定字符串的值的最惯用的方法是什么my_string: String。所以最直接的解决办法是:
if q.is_some() && q.unwrap() == my_string
Run Code Online (Sandbox Code Playgroud)
我能想到的另一种:
if q.unwrap_or_default() == my_string
Run Code Online (Sandbox Code Playgroud)
但这在my_string空的极端情况下不起作用。
另一个:
match q {
Some(s) if s == my_string => {
...
},
_ => {},
}
Run Code Online (Sandbox Code Playgroud)
但这是非常冗长的。
有没有更简单的东西,比如一些聪明的东西if let?
直接检查:
if Some(my_string) == q {
}
Run Code Online (Sandbox Code Playgroud)
或(保持my_string活力)
if Some(&my_string) == q.as_ref() {
}
Run Code Online (Sandbox Code Playgroud)
contains()将来的 rust 版本中(可能)会有一个函数,可以像这样使用
if q.contains(&my_string) {
}
Run Code Online (Sandbox Code Playgroud)
它更灵活,因为它允许比较不同的数据类型(当它们实现时PartialEq)。见https://github.com/rust-lang/rust/issues/62358
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |