Rust में फ़ंक्शन से इटरेटर (या कोई अन्य ट्रेट) सही तरीके से कैसे लौटाएं?
सभी को नमस्ते! मैंने Rust सीखना शुरू किया है और एक समस्या का सामना किया है जो सभी शुरुआती लोगों को परेशान करती है। मैं एक फ़ंक्शन लिखना चाहता हूँ जो एक इटरेटर लौटाता है। उदाहरण के लिए, मैं एक फ़ंक्शन बनाना चाहता हूँ जो संख्याओं को फ़िल्टर करे और केवल सम संख्याएँ लौटाए:
```rust
fn get_even(numbers: Vec) -> Iterator- {
numbers.into_iter().filter(|x| x % 2 == 0)
}
```
लेकिन कंपाइलर एक त्रुटि देता है: "the trait `Iterator` cannot be made into an object"। मैंने `dyn` और `impl` के बारे में पढ़ा है, लेकिन पूरी तरह से नहीं समझ पाया कि कौन सा विकल्प सही है। मैंने `impl Iterator` का उपयोग करने की कोशिश की:
```rust
fn get_even(numbers: Vec
) -> impl Iterator- {
numbers.into_iter().filter(|x| x % 2 == 0)
}
```
यह काम करता है, लेकिन मैं समझ नहीं पा रहा हूँ: कब `impl Trait` का उपयोग करना चाहिए और कब `Box
` का? और अगर मेरा फ़ंक्शन शर्तों के आधार पर अलग-अलग प्रकार के इटरेटर लौटाना चाहिए तो क्या करूँ? उदाहरण के लिए, कभी सम संख्याएँ फ़िल्टर करनी हों और कभी विषम। कृपया समझने में मेरी मदद करें!