1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年9月14日 |
---|
#4 in #middle
41KB
679 行
indexlist
- 由向量支持的循环链表。
此包提供了一个名为 IndexList<T>
的结构体,它是一个循环链表。然而,与传统的链表不同,传统的链表为每个节点单独进行堆分配,所有节点都存储在一个向量中。而不是提供节点指针,可以使用 Index
结构体来访问链表中间的特定元素。
安全性
此包使用 #![deny(unsafe_code)]
确保所有内容都使用 100% 安全的 Rust 实现。
代数索引
Index
使用代数方案,因此如果您持有对节点的 Index
,并且它被移除,然后在该位置分配了新节点,您不会访问新节点。
性能
总的来说,性能相当不错。提供了与标准库中的 LinkedList<T>
的基准测试。但还有一些其他细节
- 列表跟踪其头和尾以有效地插入。
- 基础向量只会增长,不会缩小。当移除节点时,其条目将被标记为空闲以供未来插入。
- 空闲条目本身被保留为一个单链表,这意味着它们可以有效地重用。
缺少的功能
目前,我只实现了最少的功能;有 iter
但没有 into_iter
和 iter_mut
。这已经在待办事项列表中。欢迎 Pull Requests!
无运行时依赖
~180KB