Как получить ссылку на конкретный тип из trait-объекта в Rust?
مرحباً بالجميع! أنا مبتدئ في Rust وواجهت مشكلة أثناء العمل مع كائنات السمات. لدي سمة `Animal` وهيكلين يطبقانها: `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(); // هذا يعمل
// لكن كيف يمكنني الحصول على breed من Dog أو lives_left من Cat؟
}
}
```