Avatar ·

如何从 Rust 中的 trait object 获取具体类型的引用?

大家好!我是 Rust 新手,在使用 trait object 时遇到了问题。我有一个 `Animal` trait 和两个实现它的结构体:`Dog` 和 `Cat`。我将它们作为 `Box` 存储在向量中,但之后需要访问每个类型特有的字段。 以下是简化代码: ```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(); // 这可以工作 // 但我如何获取 Dog 的 breed 或 Cat 的 lives_left? } }