ماذا تعني الكلمة المفتاحية `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 هي علامة نحوية تشير إلى