26 stable releases (4 major)
4.7.3 | Oct 21, 2024 |
---|---|
4.7.0 | Jul 30, 2024 |
4.6.0 | Mar 9, 2023 |
4.5.0 | Sep 16, 2022 |
0.1.1 | Dec 22, 2016 |
#38 in Data structures
26,585 downloads per month
Used in 110 crates
(40 directly)
120KB
1.5K
SLoC
indextree
Arena based tree structure with multithreading support
This arena tree structure is using just a single Vec
and numerical identifiers
(indices in the vector) instead of reference counted pointers. This means there
is no RefCell
and mutability is handled in a way much more idiomatic to Rust
through unique (&mut) access to the arena. The tree can be sent or shared across
threads like a Vec
. This enables general multiprocessing support like
parallel tree traversals.
Example usage
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);
Benchmarks
Dependencies
~0–495KB
~10K SLoC