cfg का उपयोग करके Rust में प्रोजेक्ट debug या release मोड में संकलित हुआ है या नहीं, यह कैसे जांचें?
सभी को नमस्कार! मैंने अभी Rust सीखना शुरू किया है और सशर्त संकलन को समझने की कोशिश कर रहा हूँ। मुझे चाहिए कि प्रोजेक्ट को debug या release मोड में संकलित करने के आधार पर अलग कोड चले। उदाहरण के लिए, debug में मैं बहुत सारी डिबग जानकारी दिखाना चाहता हूँ, और release में केवल न्यूनतम लॉग। मुझे पता है कि 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` के साथ संकलित करता हूँ, तो क्या यह गारंटी है कि यह release है?
मैंने `cfg` एट्रीब्यूट में `profile = "release"` और `profile = "debug"` का भी उल्लेख देखा। इनके बीच क्या अंतर है?