Rozważmy następujący kod:wektorowych obiektów należących do danej cechy
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());
}
}
Kompilator mówi mi, że v
jest wektorem Animal
gdy próbuję naciskać cat
(typ niedopasowanie)
Tak, jak czy mogę stworzyć wektor obiektów należących do cechy i wywołać odpowiednią metodę cech na każdym elemencie?
Ah widzę. Ma sens, że wektory wymagają deterministycznych typów wielkości. Dzięki! –