Avatar ·

Wie erstelle ich ein globales, veränderbares Singleton in Rust?

Hallo Kollegen! Ich bin neu in Rust und versuche, eine globale Konfiguration für meine Anwendung zu implementieren. Ich muss von überall im Code aus die Einstellungen lesen und ändern können (z.B. Log-Level oder Dateipfad). In anderen Sprachen würde ich einfach eine statische Variable verwenden, aber in Rust ist es komplizierter. Hier ist, was ich versucht habe: ```rust static CONFIG: Config = Config { logging: false }; struct Config { logging: bool, } fn main() { CONFIG.logging = true; // Fehler: cannot assign to static immutable } ``` Der Compiler beschwert sich, dass die Statik unveränderbar ist. Ich habe `static mut` versucht, aber es erfordert `unsafe`: ```rust static mut CONFIG: Config = Config { logging: false }; fn main() { unsafe { CONFIG.logging = true; // Funktioniert, aber unsafe } } ``` Aber überall `unsafe` zu verwenden, scheint falsch. Außerdem habe ich von Problemen mit Threads gehört – meine Anwendung ist multithreaded. Gibt es einen sicheren Weg, ein globales Singleton zu erstellen, das m