Vector von Objekten der Zugehörigkeit zu einer Eigenschaft

Betrachten Sie den folgenden code:

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, der Animal wenn ich versuche zu pushen cat (type mismatch)

So, wie kann ich einen Vektor der Objekte der Zugehörigkeit zu einer Eigenschaft und ruft die entsprechenden trait-Methode auf jedes element?

InformationsquelleAutor Jacob Wang | 2014-09-12
Schreibe einen Kommentar