Revert "Remove GetIter"

This reverts commit a49522dc86770a741d61d548351ad69dfc56d1fa.
This commit is contained in:
Matthias Beyer 2019-04-13 23:44:02 +02:00
parent b8cd9c6efa
commit 31e3116b48

View file

@ -200,6 +200,10 @@ pub mod iter {
LinkIter(v.into_iter()) LinkIter(v.into_iter())
} }
pub fn into_getter(self, store: &Store) -> GetIter {
GetIter(self.0, store)
}
} }
impl Iterator for LinkIter { impl Iterator for LinkIter {
@ -225,6 +229,32 @@ pub mod iter {
} }
} }
/// An Iterator that `Store::get()`s the Entries from the store while consumed
pub struct GetIter<'a>(IntoIter<Link>, &'a Store);
impl<'a> GetIter<'a> {
pub fn new(i: IntoIter<Link>, store: &'a Store) -> GetIter<'a> {
GetIter(i, store)
}
pub fn store(&self) -> &Store {
self.1
}
}
impl<'a> Iterator for GetIter<'a> {
type Item = Result<FileLockEntry<'a>>;
fn next(&mut self) -> Option<Self::Item> {
self.0.next().and_then(|id| match self.1.get(id) {
Ok(None) => None,
Ok(Some(x)) => Some(Ok(x)),
Err(e) => Some(Err(e).map_err(From::from)),
})
}
}
} }
impl InternalLinker for Entry { impl InternalLinker for Entry {