Rust में कब एसोसिएटेड टाइप और कब जेनेरिक पैरामीटर का उपयोग करें?
सभी को नमस्कार! मैंने Rust सीखना शुरू किया है और एक कठिनाई का सामना किया: मैं समझ नहीं पा रहा हूँ कि किन मामलों में एसोसिएटेड टाइप (associated types) का उपयोग करना चाहिए और किन में सामान्य जेनेरिक पैरामीटर (generics) का।
उदाहरण के लिए, मैं किसी iterator या collection के लिए एक trait लिख रहा हूँ। अगर मैं चाहता हूँ कि struct में एक element type हो, तो मैं ऐसा कर सकता हूँ:
```rust
trait MyIterator {
fn next(&mut self) -> Option;
}
```
या फिर ऐसा:
```rust
trait MyIterator {
type Item;
fn next(&mut self) -> Option;
}
```
दोनों तरीके काम करते हैं, लेकिन मैंने सुना है कि व्यवहार में इनके उपयोग में अंतर है। मुझे स्पष्ट नहीं है: मुझे कब एक तरीका चुनना चाहिए और कब दूसरा?
एक विशिष्ट उदाहरण: मैं ज्यामितीय आकृतियों के लिए एक trait लिख रहा हूँ जिनका क्षेत्रफल होता है। प्रत्येक आकृति का निर्देशांक (coordinates) दर्शाने के लिए अपना प्रकार हो सकता है (जैसे `f32`, `f64` या पूर्णांक भी)। अगर मैं `trait Shape` बनाऊँ, तो मुझे हर जगह प्रकार निर्दिष्ट करना होगा। और अगर मैं `tra