Avatar ·

Как создать глобальный, изменяемый синглтон в Rust?

مرحبًا أيها الزملاء! أنا جديد في Rust وأحاول تنفيذ تهيئة عالمية لتطبيقي. أحتاج إلى أن أتمكن من قراءة وتعديل الإعدادات (مثل مستوى التسجيل أو مسار الملف) من أي مكان في الكود. في لغات أخرى كنت سأقوم ببساطة بعمل متغير ثابت، ولكن في Rust الأمر أكثر تعقيدًا. إليك ما حاولت: ```rust static CONFIG: Config = Config { logging: false }; struct Config { logging: bool, } fn main() { CONFIG.logging = true; // خطأ: cannot assign to static immutable } ``` المترجم يشتكي من أن الثابت غير قابل للتغيير. جربت `static mut` ولكنه يتطلب `unsafe`: ```rust static mut CONFIG: Config = Config { logging: false }; fn main() { unsafe { CONFIG.logging = true; // يعمل، لكن unsafe } } ``` لكن استخدام `unsafe` في كل مكان يبدو غير صحيح. بالإضافة إلى ذلك، سمعت عن مشاكل مع الخيوط — تطبيقي متعدد الخيوط. هل هناك طريقة آمنة لعمل singleton عالمي يمكنه