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 次下载
20KB
347 行
vmcircbuf
这是一个简单的 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