为什么在匹配整数时会收到错误“预期整型变量,找到选项”?

Liz*_*ice 5 match rust

我正在尝试在 Rust 中使用match。我写了一个函数:

fn main() {
    let try = 3;
    let x = match try {
        Some(number) => number,
        None => 0,
    };
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

fn main() {
    let try = 3;
    let x = match try {
        Some(number) => number,
        None => 0,
    };
}
Run Code Online (Sandbox Code Playgroud)

我尝试了类似的方法let try: i32 = 3;来确保这try是一个整数值,但我仍然遇到相同的错误。

use*_*559 7

我想你想要这个:

fn main() {
    let try = Some(3);
    let x = match try {
        Some(number) => number,
        None => 0,
    };
}
Run Code Online (Sandbox Code Playgroud)

问题是您正在尝试将整数与Some(...)和相匹配None,其中Options 。这实际上没有意义......整数永远不可能是None

相反,我认为您想使用该类型并通过使用默认值Option<i32>将其转换为 an 。i32上面的代码应该可以完成这个任务。请注意,如果这就是您想要做的全部,这是一种更简单的方法:

let x = try.unwrap_or(0);
Run Code Online (Sandbox Code Playgroud)