Avatar ·

هل يمكن في Rust توسيع هيكل موجود مع الاحتفاظ بجميع حقوله؟

مرحبًا! لقد بدأت للتو في تعلم Rust بعد C++ وJava، وواجهت مشكلة. في C++، يمكنني فعل ذلك: ```cpp struct Base { int x; int y; }; struct Derived : Base { int z; }; ``` وجميع الحقول من Base تنتقل تلقائيًا إلى Derived. في Java نفس الشيء مع وراثة الفئات. في Rust، حاولت فعل شيء مشابه: ```rust struct Base { x: i32, y: i32, } struct Derived { // أريد أن تكون هنا x و y من Base z: i32, } ``` لكن المترجم يشتكي من أنني لم أعلن عن الحقلين x و y. أفهم أنه لا توجد وراثة في Rust بالمعنى التقليدي، لكنني بحاجة إلى إعادة استخدام الحقول من هيكل إلى آخر. أعتقد أن نسخ ولصق جميع الحقول هو ممارسة سيئة. تخيل أن Base يحتوي على 20 حقلًا، وأريد إنشاء 5 "ورثة" مختلفين - سيكون ذلك مئات الأسطر من الكود المتكرر! لقد سمعت عن traits، لكنها تبدو فقط للطرق وليس للبيانات. هل هناك طريقة لعمل تركيب أو تفويض؟