क्या Rust में ग्लोबल वेरिएबल्स का उपयोग किया जा सकता है?
सभी को नमस्ते! मैंने अभी-अभी Rust सीखना शुरू किया है, C++ से स्विच किया है, और मुझे एक समस्या आई है। C++ में मैं एप्लिकेशन कॉन्फ़िगरेशन या काउंटर स्टोर करने के लिए ग्लोबल वेरिएबल्स का उपयोग करता था, जिन्हें विभिन्न फंक्शन्स से एक्सेस किया जा सकता था। उदाहरण के लिए, मेरे पास एक सरल फंक्शन कॉल काउंटर है:
```rust
static COUNTER: i32 = 0;
fn increment() {
COUNTER += 1; // त्रुटि!
}
```
कंपाइलर त्रुटि देता है: "cannot mutate static variable"। मैंने इसे `mut` में लपेटने की कोशिश की:
```rust
static mut COUNTER: i32 = 0;
fn increment() {
COUNTER += 1; // unsafe! बहुत असुविधाजनक।
}
```
अब कंपाइलर को `unsafe { ... }` में एक्सेस लपेटने की आवश्यकता है। मैं समझता हूँ कि यह असुरक्षित है, लेकिन फिर ग्लोबल स्टेट को सही तरीके से कैसे व्यवस्थित करूं? मुझे चाहिए कि वेरिएबल पूरे प्रोग्राम में दिखाई दे, लेकिन कोड सुरक्षित रहे। मैंने `lazy_static` और `OnceCell` के बारे में सुना है, लेकिन समझ नहीं आता कि कौन सा दृष्टिकोण चुनूं। कृपया बताएं कि Rust में ग्लोबल वेरिएबल्स के साथ काम करने का सामान्य तरीका क्या है?