database_tree/
tree_iter.rs1use 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}