Avatar ·

É possível usar variáveis globais em Rust? Como declarar um estado global?

Olá! Estou escrevendo em Rust há algumas semanas e me deparei com um problema. Preciso armazenar a configuração do aplicativo e um contador de requisições acessíveis de diferentes módulos. Em C++, eu faria assim: ```rust // Minha tentativa (não compila) static COUNTER: i32 = 0; static CONFIG: HashMap = HashMap::new(); fn increment() { COUNTER += 1; // Erro: cannot assign to immutable static } fn main() { CONFIG.insert("host".to_string(), "localhost".to_string()); // Erro println!("{}", COUNTER); } ``` O compilador reclama sobre mutabilidade e sobre `HashMap` diz algo sobre `const fn` e alocações. Eu li que em Rust variáveis globais são complicadas, mas como fazer configurações compartilhadas? Preciso de: 1. Um contador simples que possa ser incrementado de diferentes threads. 2. Um config (HashMap) que é preenchido na inicialização e depois apenas lido. 3. Um logger que escreve em um arquivo e precisa ser inicializado uma vez. Tentei `lazy_static!` — não entendi completamente. Ajude.