Avatar ·

هل يمكن استخدام المتغيرات العامة في 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؟