[−][src]Crate generational_indextree
Arena based tree data structure
This arena tree structure is using just a single GenerationalArena and
indices in the arena instead of reference counted pointers
like. 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 generational_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 b to a a.append(b, arena); assert_eq!(b.ancestors(arena).into_iter().count(), 2);
Structs
| Ancestors | An iterator of the IDs of the ancestors a given node. |
| Arena | An |
| Children | An iterator of the IDs of the children of a given node, in insertion order. |
| Descendants | An iterator of the IDs of a given node and its descendants, as a pre-order depth-first search where children are visited in insertion order. |
| FollowingSiblings | An iterator of the IDs of the siblings after a given node. |
| Node | A node within a particular |
| NodeId | A node identifier within a particular |
| PrecedingSiblings | An iterator of the IDs of the siblings before a given node. |
| ReverseChildren | An iterator of the IDs of the children of a given node, in reverse insertion order. |
| ReverseTraverse | An iterator of the "sides" of a node visited during a depth-first pre-order traversal, where nodes are visited end to start and children are visited in reverse insertion order. |
| Traverse | An iterator of the "sides" of a node visited during a depth-first pre-order traversal, where node sides are visited start to end and children are visited in insertion order. |
Enums
| NodeEdge | Indicator if the node is at a start or endpoint of the tree |
| NodeError | Possible node failures. |