Rust में केवल मूव (move) करने योग्य लेकिन कॉपी (Copy) न करने योग्य टाइप कैसे बनाएं?
सभी को नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है और स्वामित्व (ownership) तथा Copy और Clone ट्रेट्स की अवधारणा से सामना हुआ है। लगता है मैं समझ गया हूँ कि प्रिमिटिव टाइप जैसे i32 या bool, Copy को इम्प्लीमेंट करते हैं, इसलिए असाइनमेंट पर वे कॉपी हो जाते हैं और मूल एक्सेसिबल रहता है। जबकि अधिक जटिल टाइप, जैसे String, केवल Clone होते हैं, और असाइनमेंट पर वे मूव (move) हो जाते हैं।
लेकिन मेरा एक सवाल है: क्या मैं अपना खुद का टाइप (जैसे स्ट्रक्चर) बना सकता हूँ जो String की तरह व्यवहार करे - यानी केवल मूव करने योग्य हो, और गलती से कॉपी न किया जा सके? उदाहरण के लिए, मैं एक ऐसा टाइप बनाना चाहता हूँ जो एक अद्वितीय आइडेंटिफायर या किसी संसाधन को दर्शाता हो जो डुप्लिकेट नहीं होना चाहिए। अगर मैं सिर्फ एक स्ट्रक्चर घोषित करूँ और derive(Clone, Copy) जोड़ूँ, तो यह हर असाइनमेंट पर कॉपी हो जाएगा।