كيفية قطع التكرار وإرجاع خطأ إذا أعاد 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`. أحتاج إلى أنه عند أول خطأ، يتم قطع التكرار وإرجاع الخطأ فورًا، دون معالجة السلاسل المتبقية.
كيف يمكنني فعل ذلك بشكل صحيح؟