Avatar ·

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? } }