typestar

El lifetime 'static en Rust

'static significa que la referencia vale todo el programa, no que el valor nunca se mueva.

const TITLE: &'static str = "typestar";
static LANGS: [&str; 3] = ["rust", "sql", "css"];

fn remember<T: 'static + std::fmt::Debug>(value: T) {
    println!("{:?} can be stored anywhere", value);
}

fn main() {
    println!("{TITLE} knows {:?}", LANGS);

    let owned = String::from("computed at run time");
    let leaked: &'static str = Box::leak(owned.into_boxed_str());
    println!("{leaked}");

    remember(vec![1, 2, 3]);
}

Cómo funciona

  1. Los literales de cadena son &'static str, horneados en el binario.
  2. Un bound 'static en un genérico significa que es dueño de sus datos.
  3. Fugar un Box a propósito es la manera de crear una en tiempo de ejecución.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
409
Tokens
131
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 75 segundos.

Escribe este fragmento

Paso 4 de 4 en Anotaciones de lifetime; paso 4 de 11 en Lifetimes y mutabilidad interior.

← Anterior Siguiente →