4 个稳定版本
1.1.0 | 2019 年 1 月 16 日 |
---|---|
1.0.2 | 2018 年 4 月 14 日 |
1.0.1 | 2017 年 9 月 26 日 |
1.0.0 | 2017 年 9 月 22 日 |
#501 在 数据结构 中
20,143 每月下载量
在 20 个 crate (16 直接) 中使用
25KB
154 行
队列
queues
提供了多个高效的 FIFO 队列数据结构,可用于您的库。这些结构都是基于 rust 的 Vector
类型实现的。
队列是一种线性数据结构,通常定义了三种方法
add
:也称为queue
或push
,向队列中添加元素。remove
:也称为deque
或pop
,从队列中移除最 旧的 元素。peek
:显示队列中计划移除的下一个元素。
队列有多种变体。在这个 crate 中,可用的变体包括
Queue<T>
:一个简单的可增长大小且容量无限制的 FIFO 队列。Buffer<T>
:一个有限容量的 FIFO 队列。缓冲区可以有可增长的大小(最多到定义的容量),或者可以以容量初始化,空槽默认占用默认值。CircularBuffer<T>
:类似于上面的缓冲区,但允许溢出。任何超出环形缓冲区容量的添加都会导致其最旧的元素被推出。
快速入门
快速入门指南
安装
库使用
要在项目中使用此库,请确保已将 queues
crate 添加到您的 Cargo.toml
文件中的依赖项中。
[dependencies]
queues = "1.0.2"
在您的文件中,导入 crate 并使用其成员
# #[macro_use]
extern crate queues;
use queues::*;
# fn main() { }
源代码
要启动项目
> cd ${WORKING_DIR}
> git clone <this_repo>
> cargo build
测试
使用 cargo
运行测试套件
> cd ${PROJECT_FOLDER}
> cargo test
示例
项目包含一些示例,您可以运行这些示例来查看库成员的工作方式。
示例名称是
queue
队列示例buf
缓冲区示例cbuf
环形缓冲区示例cbuf_def
带默认值的循环缓冲区示例
> cd ${PROJECT_FOLDER}
> cargo run --example ${EXAMPLE_NAME}
用法
以下描述了简单用法
#[macro_use]
extern crate queues;
use queues::*;
fn main() {
// Create a simple Queue
let mut q: Queue<isize> = queue![];
// Add some elements to it
q.add(1);
q.add(-2);
q.add(3);
// Check the Queue's size
q.size(); // 3
// Remove an element
q.remove(); // Ok(1)
// Check the Queue's size
q.size(); // 2
// Peek at the next element scheduled for removal
q.peek(); // Ok(-2)
// Confirm that the Queue size hasn't changed
q.size(); // 2
// Remove the remaining elements
q.remove(); // Ok(-2)
q.remove(); // Ok(3)
// Peek into an empty Queue
q.peek(); // Raises an error
// Attempt to remove an element from an empty Queue
q.remove(); // Raises an error
}
示例中包含有关 Buffer
和 CircularBuffer
用法的更多信息