Avatar ·

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?