1 个不稳定版本
0.1.0 | 2022年10月22日 |
---|
#102 in #fixed-size
用于 基于特质的集合
38KB
543 行
Rust 基于特质的集合
本项目是一组实现Collection
特质的数据结构,允许为该crate中的所有数据结构提供通用接口。本crate旨在证明为Rust中的所有数据结构提供一个通用接口的可行性。
摘要
本crate包含三个主要特质
Collection
:定义集合基本操作的特质。FixedSizeCollection
:定义具有固定大小集合基本操作的特质。Iterators
:封装集合所有迭代器的特质。
本crate包含以下数据结构
Queue
:基于链表节点的FIFO
数据结构。Deque
:基于链表的FIFO
和LIFO
数据结构。CircularDeque
:基于循环数组的FIFO
和LIFO
数据结构。Stack
:基于链表的LIFO
数据结构。ArrayStack
:基于固定大小数组的LIFO
数据结构。BinaryHeap
:基于二叉堆的PriorityQueue
数据结构。
有关更多信息,请参阅每个数据结构的单独文档。这可以通过运行cargo doc --open
生成。
安装
从crates.io安装
[dependencies]
trait-based-collection = "0.1"
或者,您可以克隆此仓库并从源代码构建它
git clone https://github.com/ferranSanchezLlado/rust-data-structures.git
cd r
cargo install --force --path .
如果出现安装错误,请确保您的工具链是最新的。运行以下命令获取最新版本:
rustup update
示例
use trait_based_collection::{import, Queue};
import!();
fn main() {
let mut q = queue![1, 2, 3, 4, 5];
println!("Queue: {:?}", q);
println!("Queue size: {}", q.len());
println!("Queue is empty: {}", q.is_empty());
q.add(6);
q.remove();
for i in q.iter() {
println!("Queue element: {}", i);
}
}
未来工作
要实现的数据结构
- 二叉搜索树
- AVL树
- 红黑树
- 斐波那契堆
- HashMap
- HashSet
- 图
- 向量
依赖关系
~1.5MB
~35K SLoC