Cuándo usar tipos asociados y cuándo usar parámetros genéricos (genéricos) en Rust?
¡Hola! Recientemente empecé a aprender Rust y no puedo entender un concepto. Entiendo que hay traits con tipos asociados (associated types) y traits con parámetros genéricos (generic type parameters). Aquí hay ejemplos:
```rust
// Tipo asociado
trait Container {
type Item;
fn get(&self) -> Self::Item;
}
// Tipo genérico
trait Container {
fn get(&self) -> T;
}
```
A primera vista hacen casi lo mismo. Pero he leído que la elección entre ellos es una decisión arquitectónica importante. Cuando escribo algún trait, no entiendo qué elegir. Por ejemplo, intenté hacer un trait para convertir un tipo en otro — usé un parámetro genérico. Luego para un trait "colección" — usé un tipo asociado. ¿Pero por qué? Me parece que si uso un parámetro genérico, puedo hacer varias implementaciones para un mismo tipo, mientras que con un tipo asociado solo una. ¿Significa esto que los parámetros genéricos siempre son mejores? ¿O hay casos en los que los tipos asociados son mejores?
No answers yet.
Inicia sesión para dejar una respuesta