From 863744c42dd932015f1fd96c73bd0ae01cc970f2 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 31 May 2020 16:02:30 -0400 Subject: [PATCH] Got rid of the IceTreeIterator by using map(). --- src/renderer/breadcrumb_tree.rs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/renderer/breadcrumb_tree.rs b/src/renderer/breadcrumb_tree.rs index b4bc32a..b84eb10 100644 --- a/src/renderer/breadcrumb_tree.rs +++ b/src/renderer/breadcrumb_tree.rs @@ -18,8 +18,8 @@ enum BreadcrumbTreeNodeElement<'a, C: IntoContextElement> { } impl<'a, C: IntoContextElement> BreadcrumbTreeNode<'a, C> { - pub fn ice_iter(&'a self) -> IceTreeIterator<'a> { - IceTreeIterator(Some(self)) + pub fn ice_iter(&'a self) -> impl Iterator { + self.breadcrumb_iter().map(|b| b.get_ice()) } pub fn breadcrumb_iter(&'a self) -> BreadcrumbTreeIterator<'a> { @@ -48,18 +48,6 @@ impl<'a, C: IntoContextElement> BreadcrumbTree for BreadcrumbTreeNode<'a, C> { } } -pub struct IceTreeIterator<'a>(Option<&'a dyn BreadcrumbTree>); - -impl<'a> Iterator for IceTreeIterator<'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()) - } -} - impl<'a, C: IntoContextElement> IntoIterator for &'a BreadcrumbTreeNode<'a, C> { type Item = &'a dyn BreadcrumbTree; type IntoIter = BreadcrumbTreeIterator<'a>;