¿Se pueden usar variables globales en Rust? ¿Cómo declarar un estado global?
¡Hola! Llevo un par de semanas escribiendo en Rust y me encontré con un problema. Necesito almacenar la configuración de la aplicación y un contador de solicitudes accesibles desde diferentes módulos. En C++ lo haría así:
```rust
// Mi intento (no compila)
static COUNTER: i32 = 0;
static CONFIG: HashMap = HashMap::new();
fn increment() {
COUNTER += 1; // Error: cannot assign to immutable static
}
fn main() {
CONFIG.insert("host".to_string(), "localhost".to_string()); // Error
println!("{}", COUNTER);
}
```
El compilador se queja de la mutabilidad y sobre `HashMap` dice algo sobre `const fn` y asignaciones. He leído que en Rust las variables globales son complicadas, pero ¿cómo hago entonces para tener configuraciones compartidas? Necesito:
1. Un contador simple que pueda incrementarse desde diferentes hilos.
2. Un config (HashMap) que se llena al inicio y luego solo se lee.
3. Un logger que escribe en un archivo y necesita inicializarse una sola vez.
Probé `lazy_static!` — no lo entendí del todo. Ayuda.