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 comoMutex<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
.