Avatar ·

كيفية جعل النوع قابلًا للنقل (move) فقط وليس قابلًا للنسخ (Copy) في Rust؟

مرحبًا بالجميع! لقد بدأت تعلم Rust مؤخرًا وواجهت مفهوم الملكية (ownership) والسمات Copy و Clone. يبدو أنني فهمت أن الأنواع البدائية مثل i32 أو bool تنفذ Copy، لذلك عند التعيين يتم نسخها ويبقى الأصل متاحًا. أما الأنواع الأكثر تعقيدًا مثل String فهي فقط Clone، وعند التعيين يتم نقلها (move).\n\nلكن لدي سؤال: هل يمكنني إنشاء نوع خاص بي (مثل struct) يتصرف مثل String - أي أنه سيكون قابلًا للنقل فقط، ولا يمكن نسخه عن طريق الخطأ؟ على سبيل المثال، أريد إنشاء نوع يمثل معرفًا فريدًا أو موردًا لا يجب تكراره. إذا قمت ببساطة بتعريف struct وأضفت derive(Clone, Copy)، فسيتم نسخه في كل مرة