"if let" 和 "if" 有区别吗?

Is there a difference between "if let" and "if"?

代码:

let x = Some(3);
if x == Some(3) {
    println!("if case");
}
if let Some(3) = x {
    println!("if let case");
}

结果:

if case
if let case

为什么 Rust 程序员使用 "if let"?

有了if let,你可以使用模式匹配将x分解成几个部分:

let x = Some(3);
if let Some(v) = x {
    println!("{}", v); // prints 3
}

同理if不雅:

let x = Some(3);
if x.is_some() {
    println!("{}", x.unwrap()); // not recommended
}

(playground)