كيفية الوصول إلى قيم 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، وخيارات بدون بيانات.
كما يهمني: هل يمكن بطريقة ما...