Got rid of the IceTreeIterator by using map().
This commit is contained in:
parent
781b8f645a
commit
863744c42d
@ -18,8 +18,8 @@ enum BreadcrumbTreeNodeElement<'a, C: IntoContextElement> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, C: IntoContextElement> BreadcrumbTreeNode<'a, C> {
|
impl<'a, C: IntoContextElement> BreadcrumbTreeNode<'a, C> {
|
||||||
pub fn ice_iter(&'a self) -> IceTreeIterator<'a> {
|
pub fn ice_iter(&'a self) -> impl Iterator<Item = &dyn IntoContextElement> {
|
||||||
IceTreeIterator(Some(self))
|
self.breadcrumb_iter().map(|b| b.get_ice())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn breadcrumb_iter(&'a self) -> BreadcrumbTreeIterator<'a> {
|
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<Self::Item> {
|
|
||||||
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> {
|
impl<'a, C: IntoContextElement> IntoIterator for &'a BreadcrumbTreeNode<'a, C> {
|
||||||
type Item = &'a dyn BreadcrumbTree;
|
type Item = &'a dyn BreadcrumbTree;
|
||||||
type IntoIter = BreadcrumbTreeIterator<'a>;
|
type IntoIter = BreadcrumbTreeIterator<'a>;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user