Cómo crear un singleton global y mutable en Rust?
¡Hola, colegas!
Soy nuevo en Rust y estoy intentando implementar una configuración global para mi aplicación. Necesito poder leer y cambiar la configuración (por ejemplo, el nivel de logging o la ruta de un archivo) desde cualquier parte del código. En otros lenguajes, simplemente usaría una variable static, pero en Rust es más complicado.
Esto es lo que he intentado:
```rust
static CONFIG: Config = Config { logging: false };
struct Config {
logging: bool,
}
fn main() {
CONFIG.logging = true; // Error: cannot assign to static immutable
}
```
El compilador se queja de que el static es inmutable. Probé con `static mut`, pero requiere `unsafe`:
```rust
static mut CONFIG: Config = Config { logging: false };
fn main() {
unsafe {
CONFIG.logging = true; // Funciona, pero unsafe
}
}
```
Pero usar `unsafe` en todas partes parece incorrecto. Además, he oído sobre problemas con hilos — mi aplicación es multihilo. ¿Hay una forma segura de hacer un singleton global que pueda m