Avatar ·

Como criar um singleton global mutável em Rust?

Olá, colegas! Sou novo em Rust e estou tentando implementar uma configuração global para minha aplicação. Preciso que de qualquer lugar do código seja possível ler e alterar as configurações (por exemplo, nível de logging ou caminho de arquivo). Em outras linguagens, eu simplesmente faria uma variável static, mas em Rust é mais complicado. Aqui está o que tentei: ```rust static CONFIG: Config = Config { logging: false }; struct Config { logging: bool, } fn main() { CONFIG.logging = true; // Erro: cannot assign to static immutable } ``` O compilador reclama que a static é imutável. Tentei `static mut`, mas ele requer `unsafe`: ```rust static mut CONFIG: Config = Config { logging: false }; fn main() { unsafe { CONFIG.logging = true; // Funciona, mas unsafe } } ``` Mas usar `unsafe` em todo lugar parece errado. Além disso, ouvi falar de problemas com threads — minha aplicação é multithread. Existe uma maneira segura de fazer um singleton global que m