Avatar ·

كيفية تضمين السمات مثل `#[derive]` بشكل شرطي في Rust؟

مرحباً بالجميع! أنا أتعلم Rust وواجهت موقفاً حيث أحتاج إلى أن يقوم الهيكل (struct) تلقائياً بتنفيذ trait `Debug` فقط في وضع التصحيح (debug build)، أما في بناء الإصدار (release build) فلا. أعرف عن `#[cfg(debug_assertions)]` الذي يسمح بتجميع كتل الكود بشكل شرطي. لكن كيف يمكن تطبيق ذلك على السمات (attributes)، خاصة `#[derive]`؟ إليك مثال لا يعمل: ```rust #[cfg(debug_assertions)] #[derive(Debug)] struct MyStruct { value: i32, } ``` المترجم يشتكي من أن attribute `derive` لا يمكن أن يكون شرطياً. جربت خيارات مختلفة: وضع `cfg` بعد `derive`، استخدام سمات متداخلة (nested attributes) — ولم يساعد شيء. وجدت مناقشات مشابهة في منتديات باللغة الإنجليزية، لكنها قديمة (2016–2018). ربما تغير شيء منذ ذلك الحين؟ أو هل هناك حل بديل؟