Avatar ·

ماذا تعني الكلمة المفتاحية `dyn` في أنواع Rust؟

مرحبًا! بدأت في تعلم Rust وواجهت شيئًا غريبًا. في بعض الأمثلة أرى `Box`، وفي أخرى فقط `Box` أو `&dyn Trait`. أحاول فهم ما تفعله الكلمة المفتاحية `dyn` بالضبط. على سبيل المثال، لدي هذا الكود: ```rust trait Animal { fn speak(&self); } struct Dog; impl Animal for Dog { fn speak(&self) { println!("Гав!"); } } fn main() { let pet: Box = Box::new(Dog); pet.speak(); } ``` إذا أزلت `dyn` وكتبت فقط `Box`، يعطي المترجم خطأ: "the trait `Animal` cannot be made into an object". لكنني لا أفهم لماذا يحدث هذا، وماذا يعني `dyn` أساسًا. هل هو نوع خاص؟ أم معدل؟ متى يجب استخدامه ومتى لا؟ اشرح لي، من فضلك، كمبتدئ. شكرًا مقدمًا! <<>>

ما هو dyn ولماذا هو مطلوب؟

الكلمة المفتاحية dyn في Rust هي علامة نحوية تشير إلى