ExpertiDict

Rust · Avançado · Inglês · Técnico

zero-sized type

/ˈzɪəɹoʊ saɪzd taɪp/substantivo

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 0

Exemplos

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

Veja também

Todos os termos de Rust