Quand utiliser un type associé et quand utiliser un paramètre générique en Rust ?
Bonjour à tous ! J'ai commencé à apprendre Rust et j'ai rencontré une difficulté : je n'arrive pas à comprendre dans quels cas utiliser les types associés (associated types) et dans quels cas utiliser les paramètres génériques (generics) ordinaires.
Par exemple, j'écris un trait pour un itérateur ou une collection. Si je veux que la structure ait un type d'élément, je peux faire ceci :
```rust
trait MyIterator {
fn next(&mut self) -> Option;
}
```
Ou ceci :
```rust
trait MyIterator {
type Item;
fn next(&mut self) -> Option;
}
```
Les deux options semblent fonctionner, mais j'ai entendu dire qu'il y a une différence dans la manière dont elles sont appliquées en pratique. Je ne comprends pas très bien : quand dois-je choisir une méthode plutôt que l'autre ?
Exemple concret : j'écris un trait pour des formes géométriques qui ont une aire. Chaque forme peut avoir son propre type pour représenter les coordonnées (par exemple, `f32`, `f64` ou même des entiers). Si je fais `trait Shape`, je devrai spécifier le type partout. Mais si je fais `tra