関連要素が必要になる状況
コンテナ型に、その要素に対してジェネリックなトレイトを実装した場合、そのトレイトを使用する者は全てのジェネリック型を明記 しなくてはなりません 。
以下の例ではContains
トレイトはジェネリック型A
とB
の使用を許しています。その後、Container
型に対してContains
を実装していますが、その際後にfn difference()
が使用できるように、A
、B
はそれぞれi32
と明記されています。
Contains
はジェネリックトレイトなので、fn difference()
では 全ての ジェネリック型を宣言しなくてはなりません。実際のところ、A
とB
は 引数 であるC
によって決定されていて欲しいにも関わらず、です。これは次のページで紹介する関連型と呼ばれる機能によって可能です。