Rust · Intermediário · Inglês · Técnico
static lifetime
O lifetime 'static indica uma referência válida por todo o programa, como literais de texto, ou um tipo que não contém referências de vida curta, como String.
Onde usar
Aparece no erro 'borrowed value does not live long enough' e em bounds como T: 'static, exigidos por thread::spawn. Muita gente corrige o erro errado só trocando para 'static.
Em código
let texto: &'static str = "fixo";
fn exige<T: 'static>(_t: T) {}
exige(String::from("ok"));
exige(texto);
// exige(&local); daria erroExemplos
spawn requires the closure to be 'static.
O spawn exige que a closure seja 'static.
A string literal is a &'static str.
Um literal de texto é um &'static str.
Cuidado
T: 'static não significa que o valor vive para sempre; só que ele não guarda referências que expirem antes.
Sinônimos
'static