#pointers #boolean #byte #size #bit #storing #bit-pack

ptr-bool

具有指针大小的指针和布尔值

1个不稳定版本

0.1.0 2022年10月24日

#3#bit-pack

MIT 许可证

14KB
83

ptr-bool

tl;dr:具有与指针相同大小的指针和布尔值。

这是一个便利的crate,用于将布尔值和指针打包到相同的八个字节中(32位系统上为四个字节,16位系统上为两个字节)。这是通过将布尔值存储在两个对齐指针的一位中实现的。

通常,指针和布尔值会被填充到16字节一起,而这种方法允许指针和布尔值适应8字节的空间。

该项目受到了rust-gc项目的影响,该项目使用这种方法来处理垃圾回收引用。我看到了这种方法,认为它非常聪明,因此我创建了具有一些便利包装的自己的版本,并创建了自己的crate。

注意事项

  • 指针必须对齐到两个,以确保一位是不必要的,可以用来存储布尔值。

  • 在读取PtrBool的值时可能略有开销,因为布尔值必须从指针每次读取时删除,指针值也必须从布尔值中删除,每次读取时也是如此。也就是说,除非Rust中内置了某种未知的优化,用于将布尔值存储在一比特的情况。

  • 存储在PtrBool内的值必须是Sized。这是因为指针被转换成usize;这会丢失原始指针中可能存在的任何元数据。

无运行时依赖项