#ring-buffer #ring #buffer #vec

ringvec

基于向量的简单环形缓冲区实现

1 个不稳定版本

0.1.0 2021年8月26日

#2316 in 数据结构


inditech 中使用

自定义许可协议

8KB
199 代码行

ringvec

License

基于向量的简单环形缓冲区实现。除了用于基准测试的 criterion 以外,没有其他依赖项。

使用方法

use ringvec::RingVec;

fn main() {
    let mut v = RingVec::new(3);

    assert!(v.is_empty());
    assert!(!v.is_full());

    v.push(1);
    v.push(2);
    v.push(3);

    v.push_force(4);
    v.push_force(5);

    assert!(!v.is_empty());
    assert!(v.is_full());

    assert_eq!(v.peek_oldest(), Some(&3));
    assert_eq!(v.peek_newest(), Some(&5));

    assert_eq!(v.pop(), Some(3));

    assert!(!v.is_empty());
    assert!(!v.is_full());

    assert_eq!(v.pop(), Some(4));
    assert_eq!(v.pop(), Some(5));

    assert!(v.is_empty());
    assert!(!v.is_full());
}

性能

它针对查看进行了优化,但推入时也不慢。可能在基准测试查看时出了一些问题。

  • 推入 7.4ns
  • 查看最老元素 0ns
  • 查看最新元素 0ns

没有运行时依赖项