Avatar ·

Peut-on utiliser des variables globales en Rust ? Comment déclarer un état global ?

Bonjour ! J'écris en Rust depuis quelques semaines et j'ai rencontré un problème. J'ai besoin de stocker une configuration d'application et un compteur de requêtes accessibles depuis différents modules. En C++, j'aurais fait comme ça : ```rust // Ma tentative (ne compile pas) static COUNTER: i32 = 0; static CONFIG: HashMap = HashMap::new(); fn increment() { COUNTER += 1; // Erreur : cannot assign to immutable static } fn main() { CONFIG.insert("host".to_string(), "localhost".to_string()); // Erreur println!("{}", COUNTER); } ``` Le compilateur se plaint de la mutabilité et pour `HashMap` il dit quelque chose à propos de `const fn` et des allocations. J'ai lu qu'en Rust les variables globales sont complexes, mais comment faire pour des réglages partagés ? J'ai besoin : 1. D'un simple compteur que je puisse incrémenter depuis différents threads. 2. D'une config (HashMap) qui est remplie au démarrage puis seulement lue. 3. D'un logger qui écrit dans un fichier et qui doit être initialisé une fois. J'ai essayé `lazy_static!` — je n'ai pas tout compris. Aidez-moi