rust_learning/enum_match/
if_let_def.rs

1/// if let
2pub fn if_let() {
3    // if let 语法让我们以一种不那么冗长的方式结合 if 和 let,来处理只匹配一个模式的值而忽略其他模式的情况。
4    let config_max = Some(3u8);
5    // 如果值是 Some,我们希望打印出 Some 成员中的值,这个值被绑定到模式中的 max 变量里。对于 None 值我们不希望做任何操作。
6    // 为了满足 match 表达式(穷尽性)的要求,必须在处理完这唯一的成员后加上 _ => (),这样也要增加很多烦人的样板代码。
7    match config_max {
8        Some(max) => println!("The maximum is configured to be {}", max),
9        _ => (),
10    }
11
12    // 可以认为 if let 是 match 的一个语法糖,它当值匹配某一模式时执行代码而忽略所有其他值。
13    if let Some(max) = config_max {
14        println!("The maximum is configured to be {}", max);
15    } else {
16        println!("The maximum is not configured")
17    }
18}