在学习Rust中,链接列表完全过多,作者提到:
但是,如果我们有一种特殊的枚举:
Run Code Online (Sandbox Code Playgroud)enum Foo { A, B(ContainsANonNullPtr), }空指针优化启动,这消除了标签所需的空间.如果变体是
A,整个枚举设置为全部0.否则,变体是B.这是有效的,因为它B永远不会全部0,因为它包含一个非零指针.
我想作者说的是(假设A是4位,B是4位)
let test = Foo::A
Run Code Online (Sandbox Code Playgroud)
内存布局是
0000 0000
Run Code Online (Sandbox Code Playgroud)
但
let test = Foo::B
Run Code Online (Sandbox Code Playgroud)
内存布局是
some 8 bit non 0 value
Run Code Online (Sandbox Code Playgroud)
究竟在这里优化了什么?两种表示都不总是8位当作者声称时它是什么意思
这意味着
&,&mut,Box,Rc,Arc,Vec,并把在当鲁斯特其他几个重要的类型有没有开销Option
rust ×1