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