何时在 Rust 中使用关联类型,何时使用泛型参数?
你好!我最近开始学习 Rust,但一直无法理解一个概念。我知道有带关联类型(associated types)的 trait 和带泛型参数(generic type parameters)的 trait。以下是示例:
```rust
// 关联类型
trait Container {
type Item;
fn get(&self) -> Self::Item;
}
// 泛型类型
trait Container {
fn get(&self) -> T;
}
```
乍一看它们几乎做同样的事情。但我读到过,选择它们是一个重要的架构决策。当我编写某个 trait 时,我不知道该选哪个。例如,我尝试为将一个类型转换为另一个类型创建 trait——我用了泛型参数。然后为“集合”trait——我用了关联类型。但为什么呢?我觉得如果使用泛型参数,我可以为一个类型实现多个实现,而使用关联类型则只能有一个。这是否意味着泛型参数总是更好?或者有没有情况,关联