Avatar ·

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

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