क्या Rust में ग्लोबल वेरिएबल्स का उपयोग संभव है? ग्लोबल state कैसे घोषित करें?
नमस्ते! मैं Rust में कुछ हफ्तों से लिख रहा हूँ और एक समस्या का सामना किया। मुझे एप्लिकेशन कॉन्फ़िगरेशन और रिक्वेस्ट काउंटर स्टोर करना है, जो विभिन्न मॉड्यूल से एक्सेसिबल हों। C++ में मैं ऐसा करता:
```rust
// मेरा प्रयास (कंपाइल नहीं होता)
static COUNTER: i32 = 0;
static CONFIG: HashMap = HashMap::new();
fn increment() {
COUNTER += 1; // त्रुटि: immutable static को assign नहीं कर सकते
}
fn main() {
CONFIG.insert("host".to_string(), "localhost".to_string()); // त्रुटि
println!("{}", COUNTER);
}
```
कंपाइलर म्यूटेबिलिटी पर आपत्ति करता है और `HashMap` के बारे में `const fn` और एलोकेशन की बात कहता है। मैंने पढ़ा कि Rust में ग्लोबल वेरिएबल्स जटिल हैं, लेकिन फिर सामान्य सेटिंग्स कैसे करें? मुझे चाहिए:
1. एक सरल काउंटर जिसे विभिन्न थ्रेड्स से बढ़ाया जा सके।
2. कॉन्फ़िग (HashMap) जो स्टार्टअप पर भरा जाए और फिर केवल पढ़ा जाए।
3. लॉगर जो फ़ाइल में लिखता है, और इसे एक बार इनिशियलाइज़ करना हो।
`lazy_static!` आज़माया — पूरी तरह समझ नहीं आया। मदद करें।