كيفية مقارنة قيمتين من enum في Rust بدون استخدام match؟
مرحبًا! بدأت تعلم Rust وواجهت مشكلة أثناء العمل مع enum. لدي تعداد يمثل حالة الطلب:
```rust
#[derive(Debug)]
enum OrderStatus {
Pending,
Processing,
Shipped,
Delivered,
Cancelled,
}
```
أحتاج فقط للتحقق مما إذا كانت الحالة الحالية تساوي حالة معينة، مثل `Pending`. في لغات أخرى (C++, Java) يمكنني كتابة `if (status == OrderStatus::Pending)`، لكن هذا لا يعمل في Rust:
```rust
let status = OrderStatus::Pending;
if status == OrderStatus::Pending {
println!("الطلب في انتظار المعالجة");
}
```
يُصدر المترجم خطأ: `binary operation `==` cannot be applied to type `OrderStatus``. أفهم أنه يمكن استخدام `match`، لكن لمثل هذا الفحص البسيط يبدو مرهقًا:
```rust
match status {
OrderStatus::Pending => println!("الطلب في انتظار المعالجة"),
_ => {}
}
```
هل هناك طريقة لمقارنة enum مباشرة، كما في اللغات الأخرى؟ ربما