2 个版本
0.1.1 | 2023年8月27日 |
---|---|
0.1.0 | 2022年7月28日 |
#2551 在 Rust 模式
用于 netsblox-vm
19KB
289 行
bin-pool
是一个用于内部化二进制切片的小型库。它提供了一个名为 BinPool
的类型,表示一组二进制切片;然而,内容通过允许切片在内存中重叠来高度优化空间。数据由先前添加的较小子集的“大型”切片支持。
请注意,内部化操作并不便宜,在最坏的情况下,在添加新切片时必须检查每个支持切片。仅在内存非常有限或对时间不敏感的区域进行存储优化时(例如,编译器输出)才建议使用内部化。
示例
let mut b = BinPool::new();
b.add(b"hello world".as_slice()); // add first slice - backed by itself
b.add(b"hello".as_slice()); // add another slice - backed by first
b.add(b"world".as_slice()); // add another slice - backed by first
assert_eq!(b.bytes(), 21); // 21 bytes stored
assert_eq!(b.backing_bytes(), 11); // but only 11 bytes needed to represent them
b.add(b"hello world!".as_slice()); // add another slice - becomes the backer for others
assert_eq!(b.bytes(), 33); // now 33 bytes stored
assert_eq!(b.backing_bytes(), 12); // but only 12 bytes to represent them
no_std
bin-pool
通过禁用默认功能支持在 no_std
环境中构建。请注意,需要 alloc
库。
[dependencies]
bin-pool = { version = "...", default-features = false }