Avatar ·

كيفية تحويل Option إلى Result في Rust بدون استخدام الماكرو؟

مرحبًا بالجميع. أنا أتعلم Rust وواجهت مشكلة تحويل `Option` إلى `Result`. في كثير من الأحيان في الكود الخاص بي، يحدث موقف أحصل فيه على `Option` من دالة ما (مثل من iterator أو hash map)، لكنني بحاجة إلى إرجاع `Result` لمعالجة غياب القيمة كخطأ. حاليًا أفعل ذلك باستخدام match أو if let، لكن هذا يبدو مرهقًا. على سبيل المثال: ```rust fn find_user(id: u32) -> Result { let users = get_users(); match users.iter().find(|u| u.id == id) { Some(user) => Ok(user.clone()), None => Err("User not found".to_string()), } } ``` أعلم أنه يمكن كتابة ماكرو، لكنني أتساءل: هل هناك طريقة مدمجة للقيام بذلك دون كتابة ماكرو خاص بي؟ هل يوجد في المكتبة القياسية شيء مثل `option_to_result()`؟ أو ربما هناك طريقة مثل `.unwrap_or_else()` التي تُرجع `Result`؟ أود رؤية أمثلة عن كيفية القيام بذلك في Rust الاصطلاحي. شكرًا!