Crates.io | indextree |
lib.rs | indextree |
version | 4.7.3 |
source | src |
created_at | 2016-12-20 14:29:39.109816 |
updated_at | 2024-10-21 06:17:57.955052 |
description | Arena based tree structure by using indices instead of reference counted pointers |
homepage | https://github.com/saschagrunert/indextree |
repository | https://github.com/saschagrunert/indextree |
max_upload_size | |
id | 7689 |
size | 151,023 |
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);