Rust · Avançado · Inglês · Técnico
niche optimization
Otimização em que o compilador usa valores inválidos de um tipo, como o ponteiro nulo, para representar variantes de enum sem gastar nenhum byte a mais.
Onde usar
É por isso que Option<Box<T>> e Option<&T> têm o tamanho de um ponteiro. Aparece em conversas sobre custo zero e em FFI com ponteiros anuláveis.
Em código
use std::mem::size_of;
println!("{}", size_of::<&u8>());
println!("{}", size_of::<Option<&u8>>());
println!("{}", size_of::<Option<Box<u8>>>());
// todos iguais: 8 em 64 bitsExemplos
Option of a reference uses the null niche.
Option de uma referência usa o nicho do nulo.
Thanks to the niche, Option costs nothing here.
Graças ao nicho, o Option não custa nada aqui.
Cuidado
Não vale como regra geral: o layout de enums comuns não é garantido, só alguns casos são documentados, como Option de referência ou de Box.
Sinônimos
otimização de nicho