Rust 学习笔记(13)-if-let

if let 是一个语法糖,它可以简化 match 的写法

  • 示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
fn main() {
    let some_u8_value = Some(0u8);
    match some_u8_value {
        Some(3) => println!("three"),
        _ => (),
    }

    // 等同于上面的写法
    if let Some(3) = some_u8_value {
        println!("three");
    }

    // 可以在 if let 中包含一个 else。
    // else 块中的代码与 match 表达式中的 _ 分支块中的代码相同,它等于下面的写法
    if let Some(3) = some_u8_value {
        println!("three");
    } else {
        println!("no three");
    }

    match some_u8_value {
        Some(3) => println!("three"),
        _ => println!("no three"),
    }
}

总结一下

  1. if let 是一个语法糖,用于简化 match 语句
  2. if let 会失去 match 强制要求的穷尽性检查
  3. matchif let 之间的选择依赖特定的环境以及增加简洁度失去穷尽性检查的权衡取舍
updatedupdated2025-03-012025-03-01