Avatar ·

Wann sollte man assoziierte Typen und wann generische Parameter (Generics) in Rust verwenden?

Hallo! Ich habe kürzlich angefangen, Rust zu lernen, und komme mit einem Konzept nicht ganz klar. Ich verstehe, dass es Traits mit assoziierten Typen (associated types) und Traits mit generischen Typparametern (generic type parameters) gibt. Hier sind Beispiele: ```rust // Assoziierter Typ trait Container { type Item; fn get(&self) -> Self::Item; } // Generischer Typ trait Container { fn get(&self) -> T; } ``` Auf den ersten Blick machen sie fast dasselbe. Aber ich habe gelesen, dass die Wahl zwischen ihnen eine wichtige architektonische Entscheidung ist. Wenn ich einen Trait schreibe, verstehe ich nicht, was ich wählen soll. Zum Beispiel habe ich versucht, einen Trait für die Konvertierung eines Typs in einen anderen zu erstellen – ich habe einen generischen Parameter genommen. Dann für einen "Collection"-Trait – ich habe einen assoziierten Typ genommen. Aber warum? Mir scheint, dass wenn ich einen