目次

Rustの勉強[トレイト その3]

(更新: )ぎじゅつ

はじめに

#

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

  • 最初のやりたいことから合理性を取ったら色々増えていって良かった
  • 自分に合うかどうかわからないので100個はやってみようかな

前回の振り返り

#
  • トレイトやってる
    • 思ったより知っている内容が多い
    • 深堀った時のトレイト境界とかわけわからん

今日読む場所

#

お勉強

#

メモ

#

複数のトレイト境界も指定できます。

  • 何の話してるの...?
  • トレイト境界をもうちょっと理解したいね

    impl Trait構文は単純なケースを解決しますが、実はより長いトレイト境界 (trait bound) と呼ばれる姿の糖衣構文 (syntax sugar) なのです。

  • impl Traitは単純なケースを解決している、ふむ
  • まずsyntax sugarってなんだよ
    • 糖衣構文
    • 簡単に書けるように構文を簡略化したって話ね、はいはい
  • ということは、trait boundはその中身の詳細説明ってことか、理解
pub fn notify(item1: &impl Summary, item2: &impl Summary) {

両方の引数が同じ型であることを強制することは、以下のようにトレイト境界を使ってのみ表現可能です:

pub fn notify<T: Summary>(item1: &T, item2: &T) {
  • いいたいことはわかるが、&Tってなんやねん
  • とりあえず進めるか

    複数のトレイト境界を+構文で指定する
    複数のトレイト境界も指定できます。

  • むむ、+とかでてきてしまった
  • これは雰囲気でわかっていくしかないな
  • geminiと話した、なるほどーーーーーーーーーーーーーーーーーーー
  • トレイトはAトレイト、Bトレイトとメソッド群を定義していける
    • これがJavaのinterfaceだとClassそのものに大枠を被せる必要があった
  • なのでRustのトレイトは装備品の型のようにA、Bトレイトを装備したcstructやcenumを作成できる
  • dstructはAトレイトのみimplするということも可能
  • だから強固な型制約を作成しようとするならば+構文みたいなのがでてくると
  • かーーーーーーーーーーーーーーーー天才

まとめ

#
  • トレイトを勘違いしていた
  • もっと便利に装備品のイメージで付けたすことができるもの
  • そのトレイトを複数条件にして引数にできるので型安全をジェネリクスよりも強固に担保しやすい
  • 深いじゃん、トレイト
  • 次はここをやる