Was ist ein Trait-Objekt in Rust und wie erstellt man es?
Hallo zusammen! Ich lerne seit kurzem Rust und versuche, mich mit Traits vertraut zu machen. Ich habe die Dokumentation gelesen, aber das Konzept des "trait object" bleibt für mich unklar. \n\nHier habe ich einen einfachen Trait:\n\n```rust\ntrait Animal {\n fn speak(&self);\n}\n\nstruct Dog;\nimpl Animal for Dog {\n fn speak(&self) {\n println!("Woof!");\n }\n}\n\nstruct Cat;\nimpl Animal for Cat {\n fn speak(&self) {\n println!("Meow!");\n }\n}\n```\n\nIch 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. \n\nBitte erklärt mir:\n1. Was ist ein Trait-Objekt in einfachen Worten?\n2. Wie funktioniert es unter der Haube?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
PHP 2025: Vollständiger Leitfaden für Anfänger ab null