# TransIter -- transitive iterator and utilities This small rust crate provides `TransIter`, an iterator suitable for navigating recursive structures and DAGs. The iterator allows for multiple modes of iteration. For structures in which the nodes implement `Ord`, this crate also provides a `TransPrioQueue`. In addition to the iterators themselves, this crate provides some convenience traits for creating instances of those iterators. ## Example ```rust use transiter::IntoTransIter; let names: Vec<_> = String::new() .trans_iter_with(|s| { let s = s.clone(); ["a", "b", "c"].iter().map(move |c| s.clone() + c)}) .take(10) .collect(); assert_eq!(names, vec!["", "a", "b", "c", "aa", "ab", "ac", "ba", "bb", "bc"]); ``` ## Similar crates The following crates serve a similar purpose: * [reciter](https://crates.io/crates/reciter) provides a macro for creating an iterator from a recursive function. ## License This work is provided under the MIT license. See `LICENSE` for more details.