هل يمكن استخدام المتغيرات العامة في Rust؟ كيفية تعريف حالة عامة؟
مرحبًا! أكتب بلغة Rust منذ بضعة أسابيع وواجهت مشكلة. أحتاج إلى تخزين تكوين التطبيق وعداد الطلبات، يمكن الوصول إليهما من وحدات مختلفة. في C++ كنت سأفعل ذلك:
```rust
// محاولتي (لا يتم تجميعها)
static COUNTER: i32 = 0;
static CONFIG: HashMap = HashMap::new();
fn increment() {
COUNTER += 1; // خطأ: cannot assign to immutable static
}
fn main() {
CONFIG.insert("host".to_string(), "localhost".to_string()); // خطأ
println!("{}", COUNTER);
}
```
المترجم يشتكي من قابلية التغيير ويقول عن `HashMap` شيئًا عن `const fn` والتخصيصات. قرأت أن المتغيرات العامة في Rust صعبة، ولكن كيف إذن يمكن عمل إعدادات مشتركة؟ أحتاج إلى:
1. عداد بسيط يمكن زيادته من خيوط مختلفة.
2. تكوين (HashMap) يتم ملؤه عند البدء ثم يُقرأ فقط.
3. مسجل (logger) يكتب إلى ملف، ويحتاج إلى التهيئة مرة واحدة.
جربت `lazy_static!` — لم أفهمه تمامًا. ساعدوني.