#collection #traits #deque #queue #stack #structure

trait-based-collection

一个基于特质的集合库,它使用相同的特质实现不同的数据结构

1 个不稳定发布

0.1.0 2022 年 10 月 22 日

#2264数据结构

MIT/Apache

150KB
2.5K SLoC

Rust 特质基于集合

该项目是一组实现了 Collection 特质的集合,允许为该包中的所有数据结构提供一个公共接口。该项目旨在为 Rust 中的所有数据结构提供一个公共接口的证明概念。

摘要

该包包含三个主要特质

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

该包包含以下数据结构

  • 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
~37K SLoC