É 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.
No answers yet.
Faça login para deixar uma resposta