Avatar ·

Rust में एसोसिएटेड टाइप्स और जेनेरिक पैरामीटर्स का उपयोग कब करें?

नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है और एक कॉन्सेप्ट को समझ नहीं पा रहा हूँ। मैं समझता हूँ कि एसोसिएटेड टाइप्स वाले ट्रेट्स और जेनेरिक टाइप पैरामीटर्स वाले ट्रेट्स होते हैं। ये उदाहरण हैं: ```rust // एसोसिएटेड टाइप trait Container { type Item; fn get(&self) -> Self::Item; } // जेनेरिक टाइप trait Container { fn get(&self) -> T; } ``` पहली नज़र में ये लगभग एक ही काम करते हैं। लेकिन मैंने पढ़ा है कि इनके बीच चुनाव एक महत्वपूर्ण आर्किटेक्चरल निर्णय है। जब मैं कोई ट्रेट लिखता हूँ, तो मुझे समझ नहीं आता कि क्या चुनूँ। उदाहरण के लिए, मैंने एक टाइप को दूसरे में बदलने के लिए ट्रेट बनाने की कोशिश की — मैंने जेनेरिक पैरामीटर लिया। फिर 'कलेक्शन' ट्रेट के लिए — मैंने एसोसिएटेड टाइप लिया। लेकिन क्यों? मुझे लगता है कि अगर मैं जेनेरिक पैरामीटर का उपयोग करूँ, तो मैं एक टाइप के लिए कई इम्प्लीमेंटेशन बना सकता हूँ, जबकि एसोसिएटेड टाइप के साथ केवल एक। क्या इसका मतलब है कि जेनेरिक पैरामीटर हमेशा बेहतर होते हैं? या ऐसे मामले हैं जब एसोसिएटेड टाइप बेहतर होते हैं?