检查option.is_some()&& option == x的最佳方法

Jon*_*ght 1 rust

由于您不能简单地执行以下操作:

if option.is_some() && option == 1 {...}
Run Code Online (Sandbox Code Playgroud)

因为如果option.is_some() == false第二次比较会出错。

一般认为做这种事情的最佳方法是什么?

(我现在做正确的:if option.is_some() { if option == 1 {...} }

Fre*_*ios 8

模式匹配是正确的解决方案,但如果您想要bool,则可以使用相等运算符:

fn main() {
    let maybe_int = Some(123);
    let contains_123: bool = maybe_int == Some(123);

    assert!(contains_123);
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*aro 7

模式匹配是一个功能强大的工具,请使用它!代替常规if,使用if let

if let Some(1) = option {
    // --snip--
}
Run Code Online (Sandbox Code Playgroud)

有关模式匹配的更多信息,请查阅The Rust Reference