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