tree_iter/lib.rs
1/*!
2 * # Tree-Iter
3 *
4 * A Rust library for iterating over tree structures in different traversal orders.
5 *
6 * This library provides traits and implementations for efficient iteration over tree-like data
7 * structures in both breadth-first and depth-first traversal orders, with support for both
8 * immutable and mutable traversal.
9 *
10 * ## Features
11 *
12 * - Generic support for any tree-like structure
13 * - Breadth-first and depth-first traversal orders
14 * - Immutable and mutable iteration
15 * - Safe interior mutability during traversal using guard patterns
16 *
17 * ## Example
18 *
19 * ```rust
20 * use tree_iter::prelude::*;
21 * use tree_iter::tree::Node;
22 *
23 * // Create a simple tree
24 * let tree = Node {
25 *     value: 1,
26 *     children: vec![
27 *         Node {
28 *             value: 2,
29 *             children: vec![],
30 *         },
31 *         Node {
32 *             value: 3,
33 *             children: vec![],
34 *         },
35 *     ],
36 * };
37 *
38 * // Iterate over the tree in depth-first order
39 * let values: Vec<i32> = tree.iter::<DepthFirst>()
40 *                           .map(|node| node.value)
41 *                           .collect();
42 * assert_eq!(values, vec![1, 2, 3]);
43 * ```
44 */
45
46/// Tree iteration modules for immutable references
47pub mod iter;
48/// Tree iteration modules for mutable references
49pub mod iter_mut;
50/// Traversal order definitions (breadth-first and depth-first)
51pub mod traversal_order;
52/// Default tree implementation
53pub mod tree;
54
55/// Prelude module for convenient imports of common types
56pub mod prelude {
57    pub use crate::iter::TreeNode;
58    pub use crate::iter_mut::TreeNodeMut;
59    pub use crate::traversal_order::{BreadthFirst, DepthFirst, TraversalOrder};
60}