use crate::{item::DatabaseTreeItem, treeitems_iter::TreeItemsIterator}; pub struct TreeIterator<'a> { item_iter: TreeItemsIterator<'a>, selection: Option, } impl<'a> TreeIterator<'a> { pub const fn new(item_iter: TreeItemsIterator<'a>, selection: Option) -> Self { Self { item_iter, selection, } } } impl<'a> Iterator for TreeIterator<'a> { type Item = (&'a DatabaseTreeItem, bool); fn next(&mut self) -> Option { self.item_iter .next() .map(|(index, item)| (item, self.selection.map(|i| i == index).unwrap_or_default())) } }