database_tree/
tree_iter.rs

1use crate::{item::DatabaseTreeItem, treeitems_iter::TreeItemsIterator};
2
3pub struct TreeIterator<'a> {
4    item_iter: TreeItemsIterator<'a>,
5    selection: Option<usize>,
6}
7
8impl<'a> TreeIterator<'a> {
9    pub const fn new(item_iter: TreeItemsIterator<'a>, selection: Option<usize>) -> Self {
10        Self {
11            item_iter,
12            selection,
13        }
14    }
15}
16
17impl<'a> Iterator for TreeIterator<'a> {
18    type Item = (&'a DatabaseTreeItem, bool);
19
20    fn next(&mut self) -> Option<Self::Item> {
21        self.item_iter
22            .next()
23            .map(|(index, item)| (item, self.selection.map(|i| i == index).unwrap_or_default()))
24    }
25}