Rust · Avançado · Inglês · Técnico
zero-sized type
Tipo sem dados, como () ou uma struct vazia, que ocupa zero bytes. O compilador remove o armazenamento dele, e coleções desses valores quase não gastam memória.
Onde usar
Aparece em marcadores, typestate e em HashSet<T>, que é um HashMap<T, ()>. Merece cuidado em código unsafe, porque ponteiros para ZST não apontam para memória de verdade.
Em código
use std::mem::size_of;
struct Marca;
println!("{}", size_of::<()>());
println!("{}", size_of::<Marca>());
println!("{}", size_of::<[u64; 0]>());
// os três imprimem 0Exemplos
A unit struct is a zero-sized type.
Uma struct unitária é um tipo de tamanho zero.
Vec of ZSTs never allocates for the elements.
Um Vec de ZSTs nunca aloca para os elementos.
Cuidado
Zero bytes não significa tipo inútil: ele tem identidade no sistema de tipos e pode implementar traits.
Sinônimos
ZST