Оптимизация нулевого указателя удаляет отдельное поле тега.

чение Rust с использованием слишком большого количества связанных списковАвтор упоминает:Однако, если у нас есть особый вид перечисления:

начинается оптимизация нулевого указателя, которая

enum Foo {
    A,
    B(ContainsANonNullPtr),
}

устраняет пространство, необходимое для тега, Если вариант, все перечисление установлено на всеA«S. В противном случае вариант0, Это работает, потому чтоB никогда не может быть всемBс, так как он содержит ненулевой указатель.0Я думаю, что автор говорит, что (при условии

 4 бита, иA это 4 бита)Bрасположение памяти

let test = Foo::A

но

0000 0000

расположение памяти

let test = Foo::B

Что именно здесь оптимизировано? Не всегда оба представления представляют 8 битов. Что это означает, когда автор заявляет

some 8 bit non 0 value

Это значит

и некоторые другие важные типы в Rust не имеют накладных расходов при&, &mut, Box, Rc, Arc, VecЯ не понимаю, учебник неточный? или это устаревшее?Option

Ответы на вопрос(2)

Ваш ответ на вопрос