[−][src]Function traversal::dft_post
pub fn dft_post<'a, T, F, I>(
root: &'a T,
iter_children: F
) -> DftPost<'a, T, F, I> where
T: ?Sized,
F: FnMut(&'a T) -> I,
I: Iterator<Item = &'a T>,
This is a shorthand for DftPost::new
, see DftPost
for more information.
Example
struct Node(&'static str, &'static [Node]); let tree = Node("G", &[ Node("C", &[ Node("A", &[]), Node("B", &[]) ]), Node("F", &[ Node("D", &[]), Node("E", &[]) ]), ]); // `&tree` represents the root `Node`. // The `FnMut(&Node) -> Iterator<Item = &Node>` returns // an `Iterator` to get the child `Node`s. let iter = traversal::dft_post(&tree, |node| node.1.iter()); // Map `Iterator<Item = &Node>` into `Iterator<Item = &str>` let mut iter = iter.map(|(depth, node)| (depth, node.0)); assert_eq!(iter.next(), Some((2, "A"))); assert_eq!(iter.next(), Some((2, "B"))); assert_eq!(iter.next(), Some((1, "C"))); assert_eq!(iter.next(), Some((2, "D"))); assert_eq!(iter.next(), Some((2, "E"))); assert_eq!(iter.next(), Some((1, "F"))); assert_eq!(iter.next(), Some((0, "G"))); assert_eq!(iter.next(), None);