mirror of https://github.com/TaKO8Ki/gobang
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.
26 lines
656 B
Rust
26 lines
656 B
Rust
3 years ago
|
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()))
|
||
|
}
|
||
|
}
|