Avatar ·

जब Iterator::map Result::Err लौटाता है तो पुनरावृत्ति कैसे रोकें और त्रुटि लौटाएं?

नमस्ते, अनुभवी रस्ट प्रोग्रामर्स! मैं Rust में नया हूँ और कई घंटों से एक समस्या से जूझ रहा हूँ। मेरे पास स्ट्रिंग्स का एक वेक्टर है जिसे मैं `Iterator::map` और `str::parse::()` का उपयोग करके संख्याओं में बदलना चाहता हूँ। समस्या यह है कि `parse` एक `Result` लौटाता है, और यदि कोई भी स्ट्रिंग संख्या नहीं है, तो मैं तुरंत पूरी पुनरावृत्ति रोकना चाहता हूँ और कॉल करने वाले कोड को त्रुटि लौटाना चाहता हूँ। यहाँ मेरा कोड है: ```rust fn parse_numbers(input: Vec<&str>) -> Vec { input.iter().map(|s| s.parse::().unwrap()).collect() } ``` `unwrap()` पैनिक करता है, और मुझे बिना पैनिक के एक सुंदर समाधान चाहिए। मैंने `filter_map` का उपयोग करने की कोशिश की, लेकिन यह त्रुटियों को अनदेखा करता है, जबकि मुझे उन्हें आगे भेजने की आवश्यकता है। मैंने सब कुछ `Result` में लपेटने की भी कोशिश की: ```rust fn parse_numbers(input: Vec<&str>) -> Result, ParseIntError> { input.iter().map(|s| s.parse::()).collect() } ``` लेकिन यह काम नहीं करता, क्योंकि `collect` नहीं जानता कि `Vec>` को `Result, _>` में कैसे बदला जाए। कंपाइलर शिकायत करता है।