1 个不稳定版本
0.2.2 | 2023 年 12 月 5 日 |
---|---|
0.2.1 |
|
0.2.0 |
|
0.1.0 |
|
#1254 在 Rust 模式
每月 25 次下载
21KB
474 行
小指针
这个 crate 实现了比 std
相当的指针类型占用更少的空间。您可以通过使用标志 1byteid
和 2byteid
分别选择 8 或 16 位。
TinyBox
、TinyArc
和 TinyPtr
分别等同于 Box
、Arc
和 *mut T
。
已经尽量确保从 rust
类型到等效的 tinypointers
类型的转换尽可能不痛苦。如果您需要的功能缺失,请随时提交 PR!
如何
为此,内存将在堆上分配并插入到全局数组中。您将获得数组内的一个索引,这就是所谓的 id
。
尺寸优化
由于这个 crate 力求最小化内存占用,内部使用 NonZero*
以启用内存布局优化。这意味着以下示例中的两个结构体具有相同的大小
use tinypointers::TinyBox;
struct Bar(TinyBox<i32>);
struct Foo(Option<TinyBox<i32>>);
// 2 == 2
assert_eq!(std::mem::size_of::<Bar>(), std::mem::size_of::<Foo>())
依赖项
~0.4–6MB
~11K SLoC