static

Variáveis estáticas permanecerão válidas durante toda a execução do programa e, portanto, não serão movidas:

static BANNER: &str = "Bem-vindos ao RustOS 3.14";

fn main() {
    println!("{BANNER}");
}

Conforme observado no Rust RFC Book, eles não são expandidos no local (inlined) quando utilizados e possuem um local de memória real associado. Isso é útil para código inseguro (unsafe) e embarcado, e a variável é válida durante toda a execução do programa. Quando um valor de escopo global não tem uma razão para precisar de identidade de objeto, geralmente const é preferido.

This slide should take about 5 minutes.
  • static é similar a variáveis globais mutáveis em C++.
  • static fornece identidade de objeto: um endereço na memória e estado conforme exigido por tipos com mutabilidade interior tais como Mutex<T>.

Mais para Explorar

Como variáveis estáticas (static) são acessíveis de qualquer thread, elas precisam ser Sync. A mutabilidade interior é possível através de um Mutex, atômico ou similar.

Dados locais da thread podem ser criados com a macro std::thread_local.