Avatar ·

Comment créer un singleton global et mutable en Rust ?

Bonjour ! J'apprends Rust et j'essaie de créer une variable globale accessible depuis n'importe quelle partie du programme, que l'on peut modifier. Par exemple, j'ai besoin de stocker une configuration d'application qui est chargée une fois au démarrage et qui peut ensuite être mise à jour. En C++ ou Python, je ferais simplement une variable globale, mais en Rust le compilateur râle. Voici ce que j'ai essayé : ```rust static CONFIG: Vec = Vec::new(); // erreur : durée de vie insuffisante ``` Ensuite, j'ai essayé `static mut` : ```rust static mut COUNTER: i32 = 0; fn increment() { unsafe { COUNTER += 1; } } ``` Cela fonctionne, mais on m'a dit que `static mut` n'est pas sûr et peut entraîner des data races. J'ai entendu parler de `Mutex`, `OnceCell` et `lazy_static`, mais je ne comprends pas comment les combiner correctement. J'ai besoin de : - Initialiser une variable globale une fois au démarrage du programme - La lire depuis plusieurs threads - Parfois la modifier (mais pas simultanément depuis différents threads) Comment faire correctement ?