Rust · Avançado · Inglês · Técnico
Pin
Wrapper que impede que o valor apontado seja movido na memória, essencial para futures auto-referenciáveis. Tipos Unpin podem ser movidos livremente mesmo fixados.
Onde usar
Aparece na assinatura de Future::poll, com self: Pin<&mut Self>, e em Box::pin para guardar futures em coleções.
Em código
use std::pin::Pin;
let mut x = 5;
let p: Pin<&mut i32> = Pin::new(&mut x);
println!("{}", *p);
let b = Box::pin(String::from("fixo"));
println!("{}", b);Exemplos
Box::pin the future before storing it.
Use Box::pin na future antes de guardá-la.
poll takes self as Pin<&mut Self>.
O poll recebe self como Pin<&mut Self>.
Cuidado
Pin não impede o acesso nem a alteração do valor, só o seu movimento; a maioria dos tipos, por ser Unpin, ignora o efeito.
Sinônimos
fixar
Antônimos
Unpin
Origem
Do inglês pin, 'alfinete, fixar'.