Avatar ·

Was bedeutet das Schlüsselwort `dyn` in Rust-Typen?

Hallo! Ich habe angefangen, Rust zu lernen, und bin auf eine seltsame Sache gestoßen. In einigen Beispielen sehe ich `Box`, in anderen nur `Box` oder `&dyn Trait`. Ich versuche zu verstehen, was genau das Schlüsselwort `dyn` macht. Zum Beispiel habe ich diesen Code: ```rust trait Animal { fn speak(&self); } struct Dog; impl Animal for Dog { fn speak(&self) { println!("Wuff!"); } } fn main() { let pet: Box = Box::new(Dog); pet.speak(); } ``` Wenn ich `dyn` entferne und einfach `Box` schreibe, gibt der Compiler einen Fehler aus: "the trait `Animal` cannot be made into an object". Aber ich verstehe nicht, warum das passiert und was `dyn` überhaupt bedeutet. Ist es ein spezieller Typ? Oder ein Modifikator? Wann sollte man es verwenden und wann nicht? Bitte erklären Sie es mir wie einem Anfänger. Vielen Dank im Voraus! <<>>

Was ist dyn und wofür wird es benötigt?

Das Schlüsselwort dyn in Rust ist ein syntaktischer Marker, der auf einen