Avatar ·

طريقة نظيفة لتحويل Result إلى Option في Rust

مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم Rust وواجهت موقفًا نموذجيًا: لدي دالة تُرجع `Result`، لكنني أحتاج إلى `Option` لمواصلة العمل. على سبيل المثال، أقرأ متغير بيئة: ```rust use std::env; fn main() { let port: Option = env::var("PORT") // Result .and_then(|s| s.parse()) // Result .ok(); // ??? } ``` أعلم أنه يمكن استخدام `.ok()`، الذي يحول `Result` إلى `Option` متجاهلاً الخطأ. لكن يبدو لي أن هذا الأسلوب ليس نظيفًا جدًا — فنحن نفقد معلومات الخطأ. ربما هناك طريقة أكثر اصطلاحية؟ المشكلة الثانية: لدي سلسلة استدعاءات تحتوي على عدة `Result`، وأريد تحويلها إلى `Option` في المرحلة النهائية، ولكن دون فقدان سياق الخطأ لتسجيله. كيف يمكنني فعل ذلك بشكل أنيق؟ أرجو إرشادي إلى طرق نظيفة ومقبولة في مجتمع Rust لحل هذه المشكلة. شكرًا مقدمًا!