Cómo obtener una referencia a un tipo concreto desde un objeto de trait en Rust
¡Hola a todos! Soy nuevo en Rust y me encontré con un problema al trabajar con objetos de trait. Tengo un trait `Animal` y dos structs que lo implementan: `Dog` y `Cat`. Los almaceno en un vector como `Box`, pero luego necesito acceder a campos específicos de cada tipo.
Aquí está el código simplificado:
```rust
trait Animal {
fn speak(&self);
}
struct Dog {
name: String,
breed: String,
}
struct Cat {
name: String,
lives_left: u8,
}
impl Animal for Dog {
fn speak(&self) {
println!("Woof!");
}
}
impl Animal for Cat {
fn speak(&self) {
println!("Meow!");
}
}
fn main() {
let animals: Vec> = vec![
Box::new(Dog { name: "Rex".into(), breed: "Labrador".into() }),
Box::new(Cat { name: "Whiskers".into(), lives_left: 9 }),
];
for animal in animals {
animal.speak(); // Esto funciona
// Pero, ¿cómo obtengo breed de Dog o lives_left de Cat?
}
}