Avatar ·

Como obter uma referência a um tipo concreto a partir de um trait object em Rust?

Olá a todos! Sou novo em Rust e encontrei um problema ao trabalhar com trait objects. Eu tenho um trait `Animal` e duas structs que o implementam: `Dog` e `Cat`. Eu as armazeno em um vetor como `Box`, mas depois preciso acessar campos específicos de cada tipo. Aqui está o 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(); // Isso funciona // Mas como obtenho breed de Dog ou lives_left de Cat? } } ```