if let

    1. fn main() {
    2. // 全部都是 `Option<i32>` 类型
    3. let number = Some(7);
    4. let letter: Option<i32> = None;
    5. let emoticon: Option<i32> = None;
    6. // `if let` 结构解读:若 `let` 将 `number` 解构成 `Some(i)`,则执行
    7. // 语句块(`{}`)
    8. if let Some(i) = number {
    9. // 如果要指明失败情形,就使用 else:
    10. if let Some(i) = letter {
    11. println!("Matched {:?}!", i);
    12. } else {
    13. // 解构失败。换到失败情形(Change to the failure case)。
    14. println!("Didn't match a number. Let's go with a letter!");
    15. };
    16. let i_like_letters = false;
    17. if let Some(i) = emoticon {
    18. println!("Matched {:?}!", i);
    19. // 解构失败。执行 `else if` 条件来判断轮到的失败分支是否需要执行
    20. } else if i_like_letters {
    21. println!("Didn't match a number. Let's go with a letter!");
    22. } else {
    23. // 条件执行错误。这是默认的分支:
    24. println!("I don't like letters. Let's go with an emoticon :)!");
    25. }