यदि Iterator::map Result::Err लौटाता है तो पुनरावृत्ति को कैसे रोकें और त्रुटि लौटाएं?
नमस्ते सहयोगियों! मैं Rust में नया हूँ और इटरेटर और त्रुटि प्रबंधन के साथ काम करते समय एक समस्या का सामना करना पड़ा। मेरे पास स्ट्रिंग्स का एक वेक्टर है जिसे संख्याओं में पार्स करने की आवश्यकता है। मैं `Iterator::map` का उपयोग `str::parse::()` के साथ कर रहा हूँ, जो `Result` लौटाता है। यदि पार्सिंग विफल हो जाती है, तो मैं तुरंत पुनरावृत्ति रोकना चाहता हूँ और फ़ंक्शन से त्रुटि लौटाना चाहता हूँ, बाकी तत्वों को संसाधित करना जारी नहीं रखना चाहता।
मैं यह कोशिश कर रहा हूँ:
```rust
use std::num::ParseIntError;
fn parse_numbers(input: &[&str]) -> Result, ParseIntError> {
input.iter()
.map(|s| s.parse::())
.collect()
}
```
यह कोड काम करता है, लेकिन यह सभी परिणामों को `Result, ParseIntError>` में एकत्र करता है। यदि एक स्ट्रिंग पार्स नहीं होती है, तो त्रुटि अभी भी लौटाई जाती है, लेकिन मुझे संदेह है कि `collect` सभी तत्वों को संसाधित करता है, भले ही उनमें से एक `Err` हो। मुझे चाहिए कि पहली त्रुटि पर ही पुनरावृत्ति रुक जाए और त्रुटि तुरंत लौटा दी जाए, बिना बाकी स्ट्रिंग्स को संसाधित किए।
सही तरीका क्या है?