问题
一个在其容器类型上是泛型的 trait
有类型规范要求 - trait
的用户必须指定其所有的泛型类型。
在下面的例子中,Contains
trait
允许使用泛型类型 A
和 B
。然后,该 trait 为 Container
类型实现,指定 i32
作为 A
和 B
,以便它可以与 fn difference()
一起使用。
因为 Contains
是泛型的,所以我们被迫为 fn difference()
显式声明所有的泛型类型。在实践中,我们希望找到一种方法来表示 A
和 B
由输入 C
决定。正如您将在下一节中看到的,关联类型 正好提供了这种能力。