Avatar ·

Как получить ссылку на конкретный тип из 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؟ } } ```