Was ist ein Trait-Objekt in Rust und wie erstellt man es?
Hallo zusammen! Ich lerne seit kurzem Rust und versuche, Traits zu verstehen. Ich habe die Dokumentation gelesen, aber das Konzept "Trait-Objekt" bleibt für mich unklar.
Hier ist ein einfacher Trait, den ich habe:
```rust
trait Animal {
fn speak(&self);
}
struct Dog;
impl Animal for Dog {
fn speak(&self) {
println!("Woof!");
}
}
struct Cat;
impl Animal for Cat {
fn speak(&self) {
println!("Meow!");
}
}
```
Ich möchte einen Vektor erstellen, der verschiedene Tiere speichert – sowohl Dog als auch Cat. Aber wenn ich `Vec` schreibe, beschwert sich der Compiler, dass Animal ein Trait und kein Typ ist. Im Internet wird empfohlen, `Box` zu verwenden, aber ich verstehe nicht, was dieses `dyn` ist und warum es ohne nicht geht.
Bitte erklärt mir:
1. Was ist ein Trait-Objekt in einfachen Worten?
2. Wie funktioniert es unter der Haube?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs