متجه الكائنات التي تطبق trait مشترك في Rust: كيف تنشئ وتستخدم؟
مرحبًا! أنا مبتدئ في Rust وأحاول فهم تعدد الأشكال. لدي trait `Shape` مع method `area()`، وعدة structs (`Circle`، `Rectangle`) تطبقه. أريد إنشاء متجه يمكنه تخزين كائنات من أنواع مختلفة تطبق هذا trait.
في C++ أو Java كنت سأكتب شيئًا مثل `vector shapes;` أو `List shapes = new ArrayList<>();`. لكن في Rust لا يمكنني ببساطة كتابة `Vec` — المترجم يقول إن حجم trait غير معروف في وقت compilation.
هذا هو الكود الخاص بي الذي لا يعمل:
```rust
trait Shape {
fn area(&self) -> f64;
}
struct Circle {
radius: f64,
}
impl Shape for Circle {
fn area(&self) -> f64 {
std::f64::consts::PI * self.radius * self.radius
}
}
struct Rectangle {
width: f64,
```