目次

Rustの勉強[パターンとマッチング その6]

ぎじゅつ

はじめに

#

NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる

  • 昨日は逆から読んで後悔した
  • あまりにもどうでもいい作業中に並行してやることにした

お勉強

#

NO IMAGEパターン記法 - The Rust Programming Language 日本語版

ここから

メモ

#
fn main() {
    let p = Point { x: 0, y: 7 };

    match p {
        // x軸上の{}
        Point { x, y: 0 } => println!("On the x axis at {}", x),
        // y軸上の{}
        Point { x: 0, y } => println!("On the y axis at {}", y),
        // どちらの軸上でもない: ({}, {})
        Point { x, y } => println!("On neither axis: ({}, {})", x, y),
    }
}
  • お、これいいじゃん

  • これは分かりやすいmatchな気がしている

  • Point { x, y }はその他すべてだが、マッチガードを使ってるからmatch内のprintln!で使う変数を定義してるんだな

    • _にできたほうがわかりやすいんだが
  • なるほど、分配の意味がわかってきた

enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

fn main() {
    let msg = Message::ChangeColor(0, 160, 255);

    match msg {
        Message::Quit => {
            // Quit列挙子には分配すべきデータがない
            println!("The Quit variant has no data to destructure.")
        }
        Message::Move { x, y } => {
            println!(
                // x方向に{}、y方向に{}だけ動く
                "Move in the x direction {} and in the y direction {}",
                x, y
            );
        }
        // テキストメッセージ: {}
        Message::Write(text) => println!("Text message: {}", text),
        Message::ChangeColor(r, g, b) => {
            println!(
                // 色を赤{}, 緑{}, 青{}に変更
                "Change the color to red {}, green {}, and blue {}",
                r, g, b
            )
        }
    }
}
Message::Write(text) => println!("Text message: {}", text),
        Message::ChangeColor(r, g, b) => {
            println!(
                // 色を赤{}, 緑{}, 青{}に変更
                "Change the color to red {}, green {}, and blue {}",
                r, g, b
            )
        }
  • ここか
    • 変数を使ってる箇所
    • 特段新しいことはしていない

まとめ

#
  • 思ったより便利なmatchが多いなーと思った
    • とはいえここで理解したいだけで実装するときはAIのレビューか調べ直しする気がする
      • まあ知っていることがいいんだろうな
  • 他のことと並行しながらやるのやっぱクリティ激下がるな

色々試してしまってるので進捗遅いが次はここ

NO IMAGEパターン記法 - The Rust Programming Language 日本語版