Comment créer un singleton global mutable en Rust ?
Bonjour, collègues !
Je suis nouveau en Rust et j'essaie d'implémenter une configuration globale pour mon application. J'ai besoin de pouvoir lire et modifier les paramètres (par exemple, le niveau de journalisation ou le chemin d'accès au fichier) depuis n'importe quel endroit du code. Dans d'autres langages, je ferais simplement une variable statique, mais en Rust c'est plus compliqué.
Voici ce que j'ai essayé :
```rust
static CONFIG: Config = Config { logging: false };
struct Config {
logging: bool,
}
fn main() {
CONFIG.logging = true; // Erreur : cannot assign to static immutable
}
```
Le compilateur se plaint que la statique est immuable. J'ai essayé `static mut`, mais cela nécessite `unsafe` :
```rust
static mut CONFIG: Config = Config { logging: false };
fn main() {
unsafe {
CONFIG.logging = true; // Fonctionne, mais unsafe
}
}
```
Mais utiliser `unsafe` partout semble incorrect. De plus, j'ai entendu parler de problèmes avec les threads — mon application est multithreadée. Existe-t-il un moyen sûr de créer un singleton global qui soit mut