13个版本
0.1.12 | 2023年10月28日 |
---|---|
0.1.11 | 2023年9月7日 |
0.1.9 | 2023年8月4日 |
0.1.8 | 2023年7月11日 |
0.1.5 | 2022年12月7日 |
#503 in Rust模式
每月 522 次下载
用于 6 个crate(直接使用3个)
20KB
491 行
append-only-bytes
文档
如果一个数组是只增的,并且保证所有现有数据都是不可变的,我们可以在线程间安全地共享该数组的切片,同时所有者仍然可以安全地向其中追加新数据。
这是安全的,因为没有任何可变字节拥有多个所有者。如果追加新数据时空间不足,如果存在指向旧内存的ByteSlice
引用,则AppendOnlyBytes
不会释放旧内存。只有当所有指向旧内存的ByteSlice
都已被丢弃时,旧内存才会被释放。
示例
use append_only_bytes::{AppendOnlyBytes, BytesSlice};
let mut bytes = AppendOnlyBytes::new();
bytes.push_slice(&[1, 2, 3]);
let slice: BytesSlice = bytes.slice(1..);
bytes.push_slice(&[4, 5, 6]);
assert_eq!(&*slice, &[2, 3]);
assert_eq!(bytes.as_bytes(), &[1, 2, 3, 4, 5, 6])
功能
serde
:支持serde序列化和反序列化u32_range
:支持u32
范围作为ByteSlices
方法
依赖
~170KB