match

Rustはmatchを用いて、C言語におけるswitchのようなパターンマッチングを行うことができます。マッチする最初のアームが評価され、取りうるすべての値はカバーされていなければなりません。

fn main() {
    let number = 13;
    // TODO ^ `number` の値を変えて試してみましょう。

    println!("Tell me about {}", number);
    match number {
        // 単一の値とのマッチをチェック。
        1 => println!("One!"),
        // いくつかの値とのマッチをチェック。
        2 | 3 | 5 | 7 | 11 => println!("This is a prime"),
        // TODO ^ 素数のリストに13を加えてみましょう。
        // 特定の範囲の値とのマッチをチェック。
        13..=19 => println!("A teen"),
        // その他の場合の処理
        _ => println!("Ain't special"),
        // TODO ^ この全てをキャッチするアームをコメントアウトしてみましょう。
    }

    let boolean = true;
    // マッチは式でもあります。
    let binary = match boolean {
        // マッチは全ての可能な値をカバーしなくてはなりません。
        false => 0,
        true => 1,
        // TODO ^ 試しに片方をコメントアウトしてみましょう。
    };

    println!("{} -> {}", boolean, binary);
}