#环形缓冲区 #循环缓冲区 #环形 #循环 # #双端队列 #数组

无需 std arraydeque

具有固定容量的环形缓冲区,可存储在栈上

9 个版本

0.5.1 2023年2月5日
0.4.5 2019年3月20日
0.4.3 2018年8月28日
0.4.2 2018年3月3日
0.1.3 2016年10月31日

#50数据结构

Download history 15401/week @ 2024-04-23 20302/week @ 2024-04-30 25513/week @ 2024-05-07 24970/week @ 2024-05-14 21676/week @ 2024-05-21 23758/week @ 2024-05-28 23608/week @ 2024-06-04 21798/week @ 2024-06-11 24616/week @ 2024-06-18 22562/week @ 2024-06-25 21475/week @ 2024-07-02 25129/week @ 2024-07-09 24368/week @ 2024-07-16 28804/week @ 2024-07-23 27644/week @ 2024-07-30 30427/week @ 2024-08-06

每月下载量 116,047
96 crate 中使用(直接使用 35 个)

MIT/Apache

100KB
2K SLoC

arraydeque

build status crates.io docs.rs

具有固定容量的环形缓冲区。需要 Rust 1.59+。

此 crate 受 bluss/arrayvec 启发。

文档

用法

首先,将以下内容添加到您的 Cargo.toml

[dependencies]
arraydeque = "0.5"

接下来,将此内容添加到您的 crate 根目录

extern crate arraydeque;

目前 arraydeque 默认链接到标准库,但如果你想在 #![no_std] 或 crate 中使用 arraydeque,可以通过以下方式请求

[dependencies]
arraydeque = { version = "0.4", default-features = false }

示例

extern crate arraydeque;

use arraydeque::ArrayDeque;

fn main() {
    let mut deque: ArrayDeque<_, 2> = ArrayDeque::new();
    assert_eq!(deque.capacity(), 2);
    assert_eq!(deque.len(), 0);

    deque.push_back(1);
    deque.push_back(2);
    assert_eq!(deque.len(), 2);

    assert_eq!(deque.pop_front(), Some(1));
    assert_eq!(deque.pop_front(), Some(2));
    assert_eq!(deque.pop_front(), None);
}

变更日志

  • 0.5.1 将 ArrayDeque::new() 转换为 const fn。

  • 0.5.0 支持 const 泛型容量。删除 use_generic_array 功能。

  • 0.4.5 将 generic-array 更新到 0.12

  • 0.4.4 修复 UB:Some(ArrayDeque::new(xs)).is_some() == false. (#12)

  • 0.4.3 在 use_generic_array 功能下添加对 generic-array 的支持。

  • 0.4.1 容量现在等于 backend_array.len()。

  • 0.3.1 添加行为:SaturatingWrapping

贡献

欢迎各种类型的贡献。

  • 问题。当你发现错别字、错误或有任何疑问时,请随时提出问题。
  • 拉取请求。新的集合、更好的实现、更多测试、更多文档和错别字修正都受欢迎。

许可证

基于MIT许可证授权(LICENSE-MIThttp://opensource.org/licenses/MIT

无运行时依赖

特性