Wann verwendet man assoziierte Typen und wann generische Parameter in Rust?
Hallo zusammen! Ich habe angefangen, Rust zu lernen, und bin auf eine Schwierigkeit gestoßen: Ich verstehe nicht, in welchen Fällen man assoziierte Typen (associated types) und in welchen man normale generische Parameter (generics) verwenden sollte.
Zum Beispiel schreibe ich ein Trait für einen Iterator oder eine Collection. Wenn ich möchte, dass die Struktur einen Elementtyp hat, kann ich es so machen:
```rust
trait MyIterator {
fn next(&mut self) -> Option;
}
```
Oder so:
```rust
trait MyIterator {
type Item;
fn next(&mut self) -> Option;
}
```
Beide Varianten scheinen zu funktionieren, aber ich habe gehört, dass es einen Unterschied gibt, wie sie in der Praxis angewendet werden. Mir ist nicht ganz klar: Wann sollte ich die eine Methode wählen und wann die andere?
Konkretes Beispiel: Ich schreibe ein Trait für geometrische Figuren, die eine Fläche haben.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs