Wie erstelle ich einen globalen, veränderbaren Singleton in Rust?
Hallo! Ich lerne Rust und versuche, eine globale Variable zu erstellen, die von jedem Teil des Programms aus zugänglich und veränderbar ist. Zum Beispiel muss ich eine App-Konfiguration speichern, die einmal beim Start geladen und später aktualisiert werden kann.
In C++ oder Python würde ich einfach eine globale Variable machen, aber in Rust beschwert sich der Compiler. Folgendes habe ich versucht:
```rust
static CONFIG: Vec = Vec::new(); // Fehler: fehlende Lebensdauer
```
Dann habe ich `static mut` probiert:
```rust
static mut COUNTER: i32 = 0;
fn increment() {
unsafe {
COUNTER += 1;
}
}
```
Das funktioniert, aber mir wurde gesagt, dass `static mut` unsicher ist und zu Datenrennen führen kann. Ich habe von `Mutex`, `OnceCell` und `lazy_static` gehört, verstehe aber nicht, wie man sie richtig kombiniert.
Ich brauche:
- Einmalige Initialisierung der globalen Variable beim Programmstart
- Lesen aus mehreren Threads
- Gelegentliches Ändern (aber nicht gleichzeitig aus verschiedenen Threads)
Wie macht man das richtig?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen