From 1be60511edb374c40dc026af614ae70bea355771 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 31 May 2020 14:17:21 -0400 Subject: [PATCH] Implement an iterator over the tree. --- src/renderer/breadcrumb_tree.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/renderer/breadcrumb_tree.rs b/src/renderer/breadcrumb_tree.rs index 2402c2f..9b00fea 100644 --- a/src/renderer/breadcrumb_tree.rs +++ b/src/renderer/breadcrumb_tree.rs @@ -37,3 +37,15 @@ impl<'a, C: IntoContextElement> BreadcrumbTree for BreadcrumbTreeNode<'a, C> { self.parent } } + +struct BreadcrumbTreeIterator<'a>(Option<&'a dyn BreadcrumbTree>); + +impl<'a> Iterator for BreadcrumbTreeIterator<'a> { + type Item = &'a dyn IntoContextElement; + + fn next(&mut self) -> Option { + let ret = self.0; + self.0 = self.0.map(|node| node.get_parent()).flatten(); + ret.map(|node| node.get_ice()) + } +}