im_pathtree/
lib.rs

1// SPDX-FileCopyrightText: The im-pathtree authors
2// SPDX-License-Identifier: MPL-2.0
3
4//! Immutable, path-addressable tree data structure.
5
6mod edge;
7pub use self::edge::{HalfEdge, HalfEdgeOwned, HalfEdgeTreeNode};
8
9mod node;
10pub use self::node::{DepthFirstDescendantsIter, InnerNode, LeafNode, Node, NodeValue};
11
12mod path;
13pub use self::path::{PathSegment, RootPath, SegmentedPath};
14
15mod tree;
16pub use self::tree::{
17    AncestorTreeNodeIter, InsertOrUpdateNodeValueError, MatchNodePath, NewNodeId,
18    NodeInsertedOrUpdated, NodePathMatched, NodePathResolved, ParentNodeUpdated, PathTree,
19    PathTreeTypes, SubtreeInsertedOrReplaced, SubtreeRemoved, TreeNode,
20    TreeNodeParentChildPathConflict, UpdateNodeValueError,
21};
22
23#[cfg(feature = "im")]
24type HashMap<K, V> = im::HashMap<K, V>;
25
26#[cfg(not(feature = "im"))]
27type HashMap<K, V> = std::collections::HashMap<K, V>;
28
29#[cfg(test)]
30mod tests;