25 个稳定版本 (4 个主要版本)

4.7.2 2024年8月13日
4.7.0 2024年7月30日
4.6.0 2023年3月9日
4.5.0 2022年9月16日
0.1.1 2016年12月22日

#41 in 数据结构

Download history 7330/week @ 2024-05-03 7795/week @ 2024-05-10 7608/week @ 2024-05-17 6511/week @ 2024-05-24 6724/week @ 2024-05-31 6304/week @ 2024-06-07 8044/week @ 2024-06-14 7433/week @ 2024-06-21 6563/week @ 2024-06-28 8092/week @ 2024-07-05 8070/week @ 2024-07-12 5693/week @ 2024-07-19 7898/week @ 2024-07-26 6778/week @ 2024-08-02 7953/week @ 2024-08-09 5632/week @ 2024-08-16

每月下载量 29,183
用于 102 个crate(37个直接使用)

MIT 许可证

120KB
1.5K SLoC

indextree

GitHub Actions Coverage Dependency Status Doc indextree License MIT Crates.io doc.rs

支持多线程的竞技场树结构

此竞技场树结构仅使用单个 Vec 和数值标识符(向量的索引)而非引用计数的指针。这意味着没有 RefCell,可变性通过竞技场唯一的 (&mut) 访问方式以更符合Rust的方式处理。树可以像 Vec 一样在线程之间发送或共享。这使支持并行树遍历等通用多进程支持成为可能。

示例用法

use indextree::Arena;

// Create a new arena
let arena = &mut Arena::new();

// Add some new nodes to the arena
let a = arena.new_node(1);
let b = arena.new_node(2);

// Append a to b
assert!(a.append(b, arena).is_ok());
assert_eq!(b.ancestors(arena).into_iter().count(), 2);

基准测试

https://github.com/mooman219/generational_arena_bench

依赖项

~0–520KB
~11K SLoC