You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gobang/database-tree/src/tree_iter.rs

26 lines
656 B
Rust

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