GitHub Actions Build status Coverage Dependency Status Doc indextree License MIT Crates.io doc.rs
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.
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);