9 个不稳定版本 (3 个破坏性更新)
0.7.4 | 2024 年 4 月 28 日 |
---|---|
0.7.3 | 2024 年 4 月 28 日 |
0.6.1 | 2024 年 4 月 28 日 |
0.5.3 | 2024 年 4 月 26 日 |
0.1.1 | 2024 年 4 月 22 日 |
484 在 数据结构 中
每月下载 65 次
用于 scheduled
18KB
332 行
Queued Rust 包文档
简介
欢迎使用 Queued Rust 文档,这是一个为 Rust 项目提供队列数据结构的包。此包提供了标准队列和排序队列的高效实现。
特性
所有队列实现了一个最大尺寸特性,以便更好地限制它们。队列有一个反向字段,因此您可以通过切换队列的顺序。因此,您可以将其从 FIFO 队列转换为 FOFI 队列。并将优先级队列转换为最低优先级队列。
- 队列:一个基本的 FIFO(先进先出)队列。
- SortedQueue:一个维护元素排序顺序的队列。
- Weighted:一个包装类型,可以将排序添加到任何对象。
此外,还有一些辅助函数可以帮助执行常见的任务,例如合并队列和将它们转换为不同的形式。
类型
队列
一个基本的 FIFO(先进先出)队列。
示例
use queued_rust::{Queue};
fn main() {
// Creating a regular queue
println!("Testing Out Queues\n");
let mut queue = Queue::new(false);
// Add items to the regular queue
queue.add(4);
queue.add(1);
queue.add(3);
queue.add(5);
queue.add(2);
// Two methods for iterating (.next and .iter)
println!("Printing items from regular queue");
// Notice how the items are printed in order of add 4, 1, 3, 5, 2
while let Some(item) = queue.next() {
println!("Remaining: {} Item: {}", queue.len(), item);
}
}
SortedQueue
一个维护元素排序顺序的队列。元素必须实现排序特性。
示例
use queued_rust::{SortedQueue};
fn main() {
// Creating a sorted queue
println!("\n\nTesting Out Sorted Queues\n");
let mut sorted_queue = SortedQueue::new(true);
// Add items to the sorted queue
sorted_queue.add(4);
sorted_queue.add(1);
sorted_queue.add(3);
sorted_queue.add(5);
sorted_queue.add(2);
// Notice how the items are printed in order 1, 2, 3, 4, 5
println!("Printing items from sorted queue");
while let Some(item) = sorted_queue.next() {
println!("Remaining: {} Item: {}", sorted_queue.len(), item);
}
}
Weighted
一个简单的包装类型,允许您将一个权重数字附加到任何项目旁边,以便轻松使用排序类型,因为它需要该类型实现排序特性
示例
use queued_rust::{SortedQueue, Weighted};
fn main() {
// Creating a sorted queue with weights
println!("\n\nTesting Out Sorted Weighted Queues\n");
let mut sorted_weighted_queue = SortedQueue::new(false);
// Add items to the sorted queue
sorted_weighted_queue.add(Weighted::new("hello", 10));
sorted_weighted_queue.add(Weighted::new("this queue", 4523));
sorted_weighted_queue.add(Weighted::new("is harder to order", 12412));
sorted_weighted_queue.add(Weighted::new("properly", 14));
sorted_weighted_queue.add(Weighted::new("so it might be better", 214));
sorted_weighted_queue.add(Weighted::new("to add a weight system", 41444));
println!("Printing items from sorted queue");
while let Some(item) = sorted_weighted_queue.next() {
println!("Remaining: {} Item: {}", sorted_weighted_queue.len(), item.into_item());
}
}
有尺寸队列
这是一个可以添加到任何队列的约束,强制其成为特定大小。构造有尺寸队列意味着使用 new_sized 方法创建有尺寸队列对象。现在,因为添加项目到队列可能会引发错误,所以在使用有尺寸队列时使用 try_add 方法是最佳实践。
如果它未能插入项目,它将返回 QueueError::Full。
use queued_rust::{Queue};
fn main() {
// Creating a sized queue
println!("\n\nTesting Out Sized Queues\n");
let mut sized_queue = Queue::new_sized(2, true); // Queue with max size of two items
// These two will work good
if let Err(error) = sized_queue.try_add(1) {
eprintln!("{}", error);
}
if let Err(error) = sized_queue.try_add(2) {
eprintln!("{}", error);
}
// This will fail
if let Err(error) = sized_queue.try_add(3) {
eprintln!("{}", error);
}
println!("Printing items from sized queue");
for item in sized_queue {
println!("{}", item);
}
}
未来计划
- 创建队列负载均衡器
- 允许队列与通道的接口
依赖关系
~280–740KB
~17K SLoC