Avatar ·

كيفية التحقق مما إذا كان المشروع قد تم بناؤه في وضع التصحيح أو الإصدار باستخدام cfg في Rust؟

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