ExpertiDict

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

niche optimization

/niːʃ ˌɑːptɪmaɪˈzeɪʃən/substantivo

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 bits

Exemplos

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

Veja também

Todos os termos de Rust