static

Las variables estáticas vivirán durante toda la ejecución del programa y, por lo tanto, no se moverán:

static BANNER: &str = "Bienvenide a RustOS 3.14";

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

Tal y como se indica en el libro Rust RFC Book, estas no son insertadas y tienen una ubicación de memoria real asociada. Esto resulta útil para código insertado y no seguro. Además, la variable continúa durante toda la ejecución del programa. Cuando un valor de ámbito global no tiene ningún motivo para necesitar identidad de objeto, se suele preferir const.

This slide should take about 5 minutes.
  • Por su parte, static se parece a una variable global mutable en C++.
  • static proporciona la identidad del objeto: una dirección en la memoria y en el estado que requieren los tipos con mutabilidad interior, como Mutex<T>.

Más información

Dado que se puede acceder a las variables static desde cualquier hilo, deben ser Sync. Mutabilidad interior es posible a través de un Mutex, atómico o parecido.

Datos locales al hilo se pueden crear con el macro std::thread_local.