Avatar ·

Как проверить, собран ли проект в режиме release или debug, используя cfg в Rust?

مرحبًا بالجميع! لقد بدأت للتو في تعلم Rust وأكتب مشروعًا صغيرًا باستخدام Cargo. واجهت مشكلة: أحتاج في وضع التصحيح (debug) أن يقوم البرنامج بطباعة الكثير من معلومات التصحيح في وحدة التحكم (مثل السجلات بمستوى TRACE)، بينما في وضع الإصدار النهائي (release) لا يتم طباعة هذه الرسائل على الإطلاق، حتى لا تبطئ الأداء. أعلم أنه في C/C++ يستخدمون توجيهات المعالج المسبق مثل `#ifdef DEBUG`. في Rust سمعت عن الماكرو `cfg!()`، لكنني لا أفهم كيفية تطبيقه بشكل صحيح لهذه المهمة تحديدًا. إليك مثال على الكود الحالي الخاص بي: ```rust fn main() { let x = 42; println!("x = {}", x); // هنا أريد إضافة طباعة تصحيح تكون فقط في وضع التصحيح // println!("[DEBUG] x is: {}", x); // هذا يجب أن يعمل فقط في debug } ``` حاولت الكتابة بهذه الطريقة: `#[cfg(debug_assertions)]`، لكن يبدو أنها لا تعمل تمامًا كما توقعت. هل يجب استخدام `#[cfg(not(release))]`؟ أم هناك علامة خاصة؟