引入关联类型的 RFC说:
该 RFC 通过以下方式澄清了特征匹配: 将所有特征类型参数视为输入类型,以及 提供关联类型,即输出类型。
该 RFC 通过以下方式澄清了特征匹配:
RFC 使用图形结构作为激励示例,文档中也使用了这种结构,但我承认我没有完全理解关联类型版本相对于类型参数化版本的优势。最重要的是该distance方法不需要关心Edge类型。这很好,但似乎对于拥有关联类型的原因有点肤浅。
distance
Edge
我发现关联类型在实践中使用起来非常直观,但我发现自己在决定何时何地在自己的 API 中使用它们时遇到了困难。
编写代码时,什么时候应该选择关联类型而不是泛型类型参数,什么时候应该选择相反的类型?
在 Rust 中决定使用关联类型还是泛型类型参数有时可能是一个微妙的决定,并且选择取决于各种因素。以下是一些指导原则,可帮助您决定何时使用每种指导原则:
在实践中,您可能会发现某些特征可以通过关联类型更自然地表达,而其他特征则受益于泛型类型参数提供的灵活性。它通常取决于 API 的具体要求和设计目标。