2个版本

使用旧Rust 2015

0.2.8 2018年2月17日
0.2.7 2018年2月12日

数据结构中排名2219

BSD-2-Clause

13KB
249

Hoop

Build Status codecov Crates.io

非常简单的固定大小环形缓冲区实现。与许多其他实现唯一的不同之处在于:这个实现了双向非消费迭代支持。

为什么?

想象一下,你有一些指标数据传入,你需要对其进行聚合,并且你最多需要查看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());

无运行时依赖