在这个问题中,有人试图使用泛型类型参数,但实际上应该使用关联类型来解决问题。这引发了“为什么在这里使用关联类型更合适?”的问题,让我想知道更多信息。
引入关联类型的RFC说明:
该 RFC 通过以下方式澄清了特征匹配:
我发现在实践中使用关联类型非常直观,但我在决定何时在自己的API中使用它们时会感到困难。
编写代码时,我应该在哪些情况下选择关联类型而不是通用类型参数?反之亦然?
该 RFC 通过以下方式澄清了特征匹配:
- 将所有特征类型参数视为 输入类型,并且
- 提供关联类型,这是 输出类型。
distance
方法不需要关心Edge
类型。这很不错,但似乎有点浅显,不能作为使用关联类型的充分理由。我发现在实践中使用关联类型非常直观,但我在决定何时在自己的API中使用它们时会感到困难。
编写代码时,我应该在哪些情况下选择关联类型而不是通用类型参数?反之亦然?
trait/struct MyTrait/MyStruct
只允许一个impl MyTrait for
或impl MyStruct
。trait MyTrait<Return>
是泛型的,因此允许多个impl
。Return
可以是任何类型。泛型结构体也是一样的。 - Paul-Sebastian Manole