13、初识Rust – if let 简洁控制流

目录 编程

Rust除了match控制流外,还有一个简洁编写的if let 控制流。

fn main() {
    let a = Some(8);
    if let Some(value) = a {
        println!("{}",value)
    }
}
----------------------------------------------------
   Compiling master v0.1.0 (/Users/xxxxxx)
    Finished dev [unoptimized + debuginfo] target(s) in 1.06s
     Running `target/debug/master`
8

if let控制流与if else控制流概念不同,你可以把它想象为一个精简版的match控制流。它使用等号分隔一个模式与一个表达式,一个if let相当于一个分支,虽然if let可以节约不少代码量,但它缺少了match的穷尽性检查。当你面对需要选择if let和match的场景时,需要进行较好的权衡。

同样你可以将if let认为是match的语法糖,同时你也可以在if let中添加else,if let中的else相当于match表达式中的_ 分支块的内容。

fn main() {
    let a = Some(8);
    let b: Option<i32> = None;
    if let Some(value) = b {
        println!("{}",value);
    } else {
        println!("无匹配");
    }
}
---------------------------------------------------
    Finished dev [unoptimized + debuginfo] target(s) in 0.54s
     Running `target/debug/master`
无匹配