関連型
関連型を使用すると、コンテナ型の中の要素をトレイトの中に 出力型 として書くことで、全体の可読性を上げることができます。トレイトを定義する際の構文は以下のようになります。
Contains
トレイトを使用する関数において、A
とB
を明示する必要がなくなっていることに注目しましょう。
// Without using associated types
// 関連型を使用しない場合
fn difference<A, B, C>(container: &C) -> i32 where
C: Contains<A, B> { ... }
// Using associated types
// 使用する場合
fn difference<C: Contains>(container: &C) -> i32 { ... }
前セクションの例を関連型を使用して書きなおしてみましょう。