¿Cuál es la optimización del puntero nulo en Rust?

EnAprendizaje de oxidación con demasiadas listas enlazadas, el autor menciona:

Sin embargo, si tenemos un tipo especial de enumeración:

enum Foo {
    A,
    B(ContainsANonNullPtr),
}

entra en juego la optimización de puntero nulo, queelimina el espacio necesario para la etiqueta. Si la variante esA, toda la enumeración se establece en todos0's. De lo contrario, la variante esB. Esto funciona porqueB nunca puede ser todo0's, ya que contiene un puntero distinto de cero.

Supongo que el autor dice eso (suponiendoA es de 4 bits yB es de 4 bits)

let test = Foo::A

el diseño de la memoria es

0000 0000

pero

let test = Foo::B

el diseño de la memoria es

some 8 bit non 0 value

¿Qué se optimiza exactamente aquí? ¿No son ambas representaciones siempre 8 bits? ¿Qué significa cuando el autor afirma

Significa&, &mut, Box, Rc, Arc, Vec, y varios otros tipos importantes en Rust no tienen gastos generales cuando se colocan en unOption

Respuestas a la pregunta(2)

Su respuesta a la pregunta