トレイト
チェックポイント
- 関連型 Essential *関連型*(associated type)はトレイト内で宣言された型メンバーで、各実装者が一度だけ選ぶものだ。`Iterator` が型パラメータではなく `type Item;` を使う理由、関連型が適切なケースとジェネリックパラメータが適切なケース、そして呼び出しサイトごとに `Iterator<i32>`、`Iterator<String>` などと書く必要をなくす仕組みを学ぶ。
- ジェネリックトレイトとトレイト境界 Essential 型パラメータを使ってトレイトをパラメータ化する方法(`trait Convert<T>`)と、ジェネリック関数や型を*トレイト境界*(trait bound)で制約する方法(`fn print<T: Display>(x: T)`)を学ぶ。トレイト境界が静的型検査を犠牲にせずにジェネリックコードを表現豊かにする理由と、`+` や `where` を使った複数境界の組み合わせ方を理解する。
- トレイト Essential Rust における*トレイト*(trait)は、型が提供を約束できるメソッドの名前付き集合だ。トレイトの宣言方法、`impl Trait for Type` による型へのトレイト実装、実装の一貫性を保つ孤児ルール(orphan rule)、そしてトレイトが他言語のインターフェース・型クラス・抽象基底クラスに相当する理由を学ぶ。