11 个版本

0.2.8 2020年5月6日
0.2.7 2020年5月6日
0.2.3 2020年4月30日
0.1.3 2020年4月30日

#419操作系统

每月 26 次下载

MIT 许可证

20KB
347

vmcircbuf

Build Status Crate Documentation GitHub

这是一个简单的 crate,用于创建无需复制的循环缓冲区。缓冲区精确地存储 size 个字节,但它呈现为一个长度为 size + wrap 的切片,其中最后 wrap 个字节与切片开头的 wrap 个字节重叠。这个魔法是通过虚拟内存实现的,相同的物理页面在缓冲区的开始和结束处都进行了映射。此 crate 在 Linux、OSX、Windows、iOS、Android、Raspberry PI 和 MIPS 上运行。

let mut buffer = Buffer::new(1024, 100).unwrap();
let size = buffer.size();
let wrap = buffer.wrap();
assert!(size >= 1024 && wrap >= 100);
let slice: &mut [u8] = buffer.as_mut_slice();
assert_eq!(slice.len(), size + wrap);

for a in slice.iter_mut() {
    *a = 0;
}

slice[0] = 123;
assert_eq!(slice[size], 123);

依赖项

~215KB