2个版本
使用旧Rust 2015
0.2.8 | 2018年2月17日 |
---|---|
0.2.7 | 2018年2月12日 |
在数据结构中排名2219
13KB
249 行
Hoop
非常简单的固定大小环形缓冲区实现。与许多其他实现唯一的不同之处在于:这个实现了双向非消费迭代支持。
为什么?
想象一下,你有一些指标数据传入,你需要对其进行聚合,并且你最多需要查看21个条目。使用Vec和VecDeque,你需要不断地移动和/或分配资源。这个缓冲区允许你简单地写入它,并且时不时地获取"最后N个条目",而不需要从缓冲区中移除它们。
安装
hoop
可在crates.io上获取,并且可以像这样包含到您的Cargo支持的项目中:
[dependencies]
hoop = "0.2.7"
用法
let mut buffer = Hoop::with_capacity(4);
buffer.write('1');
buffer.write('2');
buffer.write('3');
buffer.write('4');
let mut iter = buffer.iter();
assert_eq!(Some(&'1'), iter.next());
assert_eq!(Some(&'4'), iter.next_back());
assert_eq!(Some(&'2'), iter.next());
assert_eq!(Some(&'3'), iter.next_back());
assert_eq!(None, iter.next());
assert_eq!(None, iter.next_back());