19 个版本 (9 个破坏性更新)
1.0.0 |
|
---|---|
0.15.0 | 2023年9月15日 |
0.14.2 | 2023年7月28日 |
0.12.0 | 2023年1月19日 |
0.1.1 | 2019年6月25日 |
#85 in 数据结构
67,843 每月下载量
在 26 个crate中使用 (直接使用19个)
105KB
2.5K SLoC
Ringbuffer
ringbuffer crate 提供了在Rust中安全的固定大小循环缓冲区(ringbuffer)。
提供了三种类型的ringbuffer实现,API基本相似
类型 | 描述 |
---|---|
AllocRingBuffer |
在运行时在堆上分配的ringbuffer。此ringbuffer仍然是固定大小的。这需要alloc功能。 |
GrowableAllocRingBuffer |
在运行时在堆上分配的ringbuffer。此ringbuffer可以按大小增长,并在内部实现为 alloc::VecDeque 。这需要alloc功能。 |
ConstGenericRingBuffer |
使用const generics在栈上分配的ringbuffer。 |
所有这些ringbuffer还实现了RingBuffer trait,以实现它们的共享API表面。
MSRV: Rust 1.59
用法
use ringbuffer::{AllocRingBuffer, RingBuffer};
fn main() {
let mut buffer = AllocRingBuffer::with_capacity(2);
// First entry of the buffer is now 5.
buffer.push(5);
// The last item we pushed is 5
assert_eq!(buffer.back(), Some(&5));
// Second entry is now 42.
buffer.push(42);
assert_eq!(buffer.peek(), Some(&5));
assert!(buffer.is_full());
// Because capacity is reached the next push will be the first item of the buffer.
buffer.push(1);
assert_eq!(buffer.to_vec(), vec![42, 1]);
}
功能
名称 | 默认 | 描述 |
---|---|---|
alloc | ✓ | 禁用此功能可删除对alloc的依赖。禁用此功能将使 ringbuffer no_std 。 |
许可证
MIT许可证授权