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