Avatar ·

كيفية إنشاء تعدادات بقيم ثابتة في Rust؟

مرحبًا أيها الزملاء! بدأت تعلم Rust بعد C++ وPython، وواجهت مشكلة غير متوقعة بالنسبة لي: كيف يمكن إنشاء تعدادات (enums) بقيم ثابتة بشكل صحيح؟ في C++، كنت معتادًا على كتابة شيء مثل `enum Color { RED = 0xFF0000, GREEN = 0x00FF00, BLUE = 0x0000FF };`، وكان لكل خيار قيمة رقمية. في Python، كنت أستخدم `IntEnum` أو مجرد فئات مع ثوابت. لكن في Rust، عندما أحاول القيام بذلك: ```rust enum HttpStatus { Ok = 200, NotFound = 404, InternalServerError = 500, } ``` يُصدر المترجم خطأً إذا حاولت استخدام هذه القيم كأعداد صحيحة. على سبيل المثال، أريد تحويل الحالة إلى رقم لإرساله عبر الشبكة أو للتسجيل. جربت كتابة `status as u32`، لكن هذا يعمل فقط مع التعدادات التي ترث صراحةً نوعًا صحيحًا. وماذا لو أردت تخزين نصوص أو بيانات معقدة أخرى؟ على سبيل المثال، تعداد "الأخطاء" مع رموز وأوصاف نصية: ```rust enum Error { NotFound { code: 42