use libimagstore::storeid::StoreId;
use libimagstore::storeid::StoreIdIterator;
use crate::notestoreid::*;
use failure::Fallible as Result;
use failure::Error;
use failure::ResultExt;
#[derive(Debug)]
pub struct NoteIterator(StoreIdIterator);
impl NoteIterator {
pub fn new(iditer: StoreIdIterator) -> NoteIterator {
NoteIterator(iditer)
}
}
impl Iterator for NoteIterator {
type Item = Result<StoreId>;
fn next(&mut self) -> Option<Self::Item> {
while let Some(n) = self.0.next() {
match n.context("Error while iterating").map_err(Error::from) {
Ok(n) => if n.is_note_id() {
return Some(Ok(n));
},
Err(e) => return Some(Err(e)),
}
}
None
}
}