Avatar ·

¿Se pueden usar variables globales en Rust?

¡Hola a todos! Acabo de empezar a aprender Rust, viniendo de C++, y me encontré con un problema. En C++ estaba acostumbrado a usar variables globales para almacenar la configuración de la aplicación o contadores a los que necesitaba acceso desde diferentes funciones. Por ejemplo, tengo un contador simple de llamadas a función: ```rust static COUNTER: i32 = 0; fn increment() { COUNTER += 1; // ¡Error! } ``` El compilador da un error: "cannot mutate static variable". Intenté envolverla en `mut`: ```rust static mut COUNTER: i32 = 0; fn increment() { COUNTER += 1; // unsafe! Muy incómodo. } ``` Ahora el compilador requiere envolver el acceso en `unsafe { ... }`. Entiendo que esto no es seguro, pero ¿cómo se organiza correctamente el estado global? Necesito que la variable sea visible en todo el programa, pero que el código siga siendo seguro. He oído hablar de `lazy_static` y `OnceCell`, pero no entiendo qué enfoque elegir. Por favor, indíquenme cómo se trabaja con variables globales en Rust.