diff --git a/lib/entry/libimagentrylink/src/internal.rs b/lib/entry/libimagentrylink/src/internal.rs
index 3f2df918..be979e00 100644
--- a/lib/entry/libimagentrylink/src/internal.rs
+++ b/lib/entry/libimagentrylink/src/internal.rs
@@ -200,6 +200,10 @@ pub mod iter {
LinkIter(v.into_iter())
}
+ pub fn into_getter(self, store: &Store) -> GetIter {
+ GetIter(self.0, store)
+ }
+
}
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, &'a Store);
+
+ impl<'a> GetIter<'a> {
+ pub fn new(i: IntoIter, store: &'a Store) -> GetIter<'a> {
+ GetIter(i, store)
+ }
+
+ pub fn store(&self) -> &Store {
+ self.1
+ }
+ }
+
+ impl<'a> Iterator for GetIter<'a> {
+ type Item = Result>;
+
+ fn next(&mut self) -> Option {
+ 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 {