Cuándo usar un tipo asociado y cuándo un parámetro genérico en Rust?
¡Hola a todos! Empecé a estudiar Rust y me encontré con una dificultad: no puedo entender en qué casos se deben usar tipos asociados (associated types) y en cuáles parámetros genéricos (generics) normales.
Por ejemplo, estoy escribiendo un trait para algún iterador o colección. Si quiero que la estructura tenga un tipo de elemento, puedo hacerlo así:
```rust
trait MyIterator {
fn next(&mut self) -> Option;
}
```
O así:
```rust
trait MyIterator {
type Item;
fn next(&mut self) -> Option;
}
```
Ambas opciones parecen funcionar, pero he oído que hay una diferencia en cómo se aplican en la práctica. No me queda claro: ¿cuándo debo elegir una forma y cuándo la otra?
Ejemplo concreto: estoy escribiendo un trait para figuras geométricas que tienen un área. Cada figura puede tener su propio tipo para representar coordenadas (por ejemplo, `f32`, `f64` o incluso números enteros). Si hago `trait Shape`, tendré que especificar el tipo en todas partes. Y si hago `tra