den folgenden Code vor:Vektor von Objekten zu einem Merkmal gehör
trait Animal {
fn make_sound(&self) -> String;
}
struct Cat;
impl Animal for Cat {
fn make_sound(&self) -> String {
"meow".to_string()
}
}
struct Dog;
impl Animal for Dog {
fn make_sound(&self) -> String {
"woof".to_string()
}
}
fn main() {
let dog: Dog = Dog;
let cat: Cat = Cat;
let v: Vec<Animal> = Vec::new();
v.push(cat);
v.push(dog);
for animal in v.iter() {
println!("{}", animal.make_sound());
}
}
Der Compiler sagt mir, dass v
ist ein Vektor von Animal
wenn ich versuche, cat
zu schieben (Typ Mismatch)
So, wie Kann ich einen Vektor von Objekten erstellen, die zu einem Merkmal gehören, und die entsprechende Trait-Methode für jedes Element aufrufen?
Ah ich sehe. Es ist sinnvoll, dass Vektoren deterministisch große Typen benötigen. Vielen Dank! –