1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018年9月14日

#4 in #middle

MIT/Apache

41KB
679

indexlist - 由向量支持的循环链表。

Build Status Build status

此包提供了一个名为 IndexList<T> 的结构体,它是一个循环链表。然而,与传统的链表不同,传统的链表为每个节点单独进行堆分配,所有节点都存储在一个向量中。而不是提供节点指针,可以使用 Index 结构体来访问链表中间的特定元素。

安全性

此包使用 #![deny(unsafe_code)] 确保所有内容都使用 100% 安全的 Rust 实现。

代数索引

Index 使用代数方案,因此如果您持有对节点的 Index,并且它被移除,然后在该位置分配了新节点,您不会访问新节点。

性能

总的来说,性能相当不错。提供了与标准库中的 LinkedList<T> 的基准测试。但还有一些其他细节

  • 列表跟踪其头和尾以有效地插入。
  • 基础向量只会增长,不会缩小。当移除节点时,其条目将被标记为空闲以供未来插入。
  • 空闲条目本身被保留为一个单链表,这意味着它们可以有效地重用。

缺少的功能

目前,我只实现了最少的功能;有 iter 但没有 into_iteriter_mut。这已经在待办事项列表中。欢迎 Pull Requests!

无运行时依赖

~180KB