Avatar ·

كيفية الوصول إلى قيم enum في Rust؟ تحليل match و if let وطرق أخرى

مرحباً بالجميع! بدأت تعلم Rust مؤخراً وواجهت مشكلة عند العمل مع التعدادات (enums). أنشأت enum بسيط لتمثيل حالة الطلب: ```rust enum OrderStatus { Pending, Processing, Shipped(String), Delivered { date: String, signature: bool }, } ``` لكني لا أفهم كيفية استخراج البيانات من الخيارات. مثلاً، عندما تكون الحالة `Shipped`، أحتاج إلى الحصول على رقم التتبع (`String`). وعندما تكون `Delivered` — التاريخ والتوقيع. مجرد كتابة `order_status.tracking_number` لا يعمل — المترجم يشتكي. حاولت استخدام `match`، لكني أخلط باستمرار في الصياغة وأحصل على أخطاء مثل "expected enum, found &str". في التوثيق مكتوب عن `if let` و `unwrap`، لكني لا أفهم متى أستخدم ماذا. أرجو التوضيح، كيف يمكن الوصول إلى البيانات داخل enum في Rust؟ أود رؤية أمثلة مع خيارات مختلفة: مع الحقول المسماة، ومع tuples، وخيارات بدون بيانات. كما يهمني: هل يمكن بطريقة ما...