目次

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

ぎじゅつ

はじめに

#

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

お勉強

#
  • 時間を20分から15分に変えた
    • どれだけ詰め込めるか

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

  • ここから

メモ

#
  • refって出てきたんだっけ
    • 記憶ねぇ
let robot_name = Some(String::from("Bors"));

match robot_name {
// 名前が見つかりました: {}
Some(name) => println!("Found a name: {}", name),
None => (),
}

// robot_nameは: {:?}
println!("robot_name is: {:?}", robot_name);
  • これが失敗するらしい

このコードを修正するために、Some(name)パターンに所有権を奪わせるのではなく、robot_nameのその部分を借用させたいです。

  • なるほどな、&でいい

パターンの外なら、値を借用する手段は、&で参照を生成することだと既にご認識でしょうから、解決策はSome(name)Some(&name)に変えることだとお考えかもしれませんね。

  • 先回りされてる

しかしながら、「分配して値を分解する」節で見かけたように、パターンにおける&記法は参照を生成せず、値の既存の参照にマッチします。

  • うげ、なるほど
let robot_name = Some(String::from("Bors"));

match robot_name {
Some(ref name) => println!("Found a name: {}", name),
None => (),
}

println!("robot_name is: {:?}", robot_name);
  • だからrefをつけるわけね

    • 理解
  • 可変だとref mutを付けるらしい

    • やらないほうがよさそう
  • マッチガードは結構前に見たな

    • matchのなかに新たに条件分岐が書ける
    • Some(n)とか書けばnに対しての比較でmatchできる
  • 大変だった

    • 使わないと覚えられないなと思った
  • Unsafeきた

    • だめなやつ

まとめ

#
  • パターンについては特にない

    • 一旦理解しておく必要があったので読んでいたらかなり長かった
  • つぎここ

NO IMAGEUnsafe Rust - The Rust Programming Language 日本語版