如何从 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?
}
}