Avatar ·

متجه الكائنات التي تطبق 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, ```