Rust · Avançado · Inglês · Técnico
PhantomData
Tipo de tamanho zero que informa ao compilador que uma struct se comporta como se contivesse um T, sem guardar nenhum dado de fato.
Onde usar
Usado em ids tipados, ponteiros brutos e typestate. Sem ele, um parâmetro genérico que a struct não usa gera erro de compilação.
Em código
use std::marker::PhantomData;
struct Id<T> {
n: u32,
_t: PhantomData<T>,
}
let id: Id<String> =
Id { n: 1, _t: PhantomData };
println!("{}", id.n);Exemplos
Add a PhantomData field for the unused type.
Adicione um campo PhantomData para o tipo não usado.
PhantomData makes the id type-safe.
O PhantomData torna o id seguro em relação aos tipos.
Cuidado
Não ocupa memória em execução, mas afeta variância, drop check e os traits Send e Sync da struct.
Origem
Do inglês phantom, 'fantasma': um dado que existe só para o compilador.