Qual é a otimização de ponteiro nulo no Rust?

NoAprendendo a ferrugem com listas vinculadas inteiramente demais, o autor menciona:

No entanto, se tivermos um tipo especial de enum:

enum Foo {
    A,
    B(ContainsANonNullPtr),
}

a otimização do ponteiro nulo entra em ação, o queelimina o espaço necessário para a tag. Se a variante forA, todo o enum está definido como todos0's. Caso contrário, a variante éB. Isso funciona porqueB nunca pode ser tudo0, pois contém um ponteiro diferente de zero.

Eu acho que o autor está dizendo que (assumindoA é de 4 bits eB é de 4 bits)

let test = Foo::A

o layout da memória é

0000 0000

mas

let test = Foo::B

o layout da memória é

some 8 bit non 0 value

O que exatamente é otimizado aqui? As duas representações nem sempre são 8 bits O que significa quando o autor afirma

Isso significa&, &mut, Box, Rc, Arc, Vec, e vários outros tipos importantes de Rust não têm sobrecarga quando colocados em umOption

questionAnswers(2)

yourAnswerToTheQuestion