问题
对于容器类型是泛型的 trait
,有类型规范要求 —— trait
的使用者必须指定所有的泛型类型。
在下面的例子中,Contains
trait 允许使用泛型类型 A
和 B
。然后为 Container
类型实现该 trait,将 A
和 B
指定为 i32
,以便与 fn difference()
一起使用。
由于 Contains
是泛型的,我们不得不为 fn difference()
显式声明所有泛型类型。实际上,我们希望有一种方法来表达 A
和 B
是由输入 C
决定的。正如你将在下一节中看到的,关联类型恰好提供了这种能力。