相关疑难解决方法(0)

Rust中的空指针优化是什么?

学习Rust中,链接列表完全过多,作者提到:

但是,如果我们有一种特殊的枚举:

enum Foo {
    A,
    B(ContainsANonNullPtr),
}
Run Code Online (Sandbox Code Playgroud)

空指针优化启动,这消除了标签所需的空间.如果变体是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

10
推荐指数
3
解决办法
1634
查看次数

标签 统计

rust ×1