Variáveis Estáticas Mutáveis

É seguro ler uma variável estática imutável:

static OLA_MUNDO: &str = "Olá, mundo!";

fn main() {
    println!("OLA_MUNDO: {OLA_MUNDO}");
}

No entanto, como podem ocorrer corridas de dados, não é seguro ler e gravar dados em variáveis estáticas mutáveis:

static mut CONTADOR: u32 = 0;

fn adicionar_ao_contador(inc: u32) {
    unsafe { CONTADOR += inc; }  // Corrida de dados potencial!
}

fn main() {
    adicionar_ao_contador(42);

    unsafe { println!("CONTADOR: {CONTADOR}"); }  // Corrida de dados potencial!
}

Usar uma variável estática mutável geralmente é uma má ideia, mas há alguns casos em que isso pode fazer sentido, tais como em código no_std de baixo nível, como implementar um alocador de heap ou trabalhar com algumas APIs C.