Avatar ·

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