Avatar ·

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