1 个不稳定版本

0.1.0 2022年10月22日

#102 in #fixed-size


用于 基于特质的集合

MIT/Apache

38KB
543

Rust 基于特质的集合

本项目是一组实现Collection特质的数据结构,允许为该crate中的所有数据结构提供通用接口。本crate旨在证明为Rust中的所有数据结构提供一个通用接口的可行性。

摘要

本crate包含三个主要特质

  • Collection:定义集合基本操作的特质。
  • FixedSizeCollection:定义具有固定大小集合基本操作的特质。
  • Iterators:封装集合所有迭代器的特质。

本crate包含以下数据结构

  • Queue:基于链表节点的FIFO数据结构。
  • Deque:基于链表的FIFOLIFO数据结构。
  • CircularDeque:基于循环数组的FIFOLIFO数据结构。
  • 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