diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2018-04-30 17:28:54 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2018-05-01 17:44:00 +0200 |
commit | 8f03b4a71ab173041e2ab740c2a268bfd0666d2d (patch) | |
tree | 245c40c44097cc7df2e9ba7c7c2742d0afe8f5c6 /lib | |
parent | a2ff298e672694a4204d0989c364d5ecb3599f55 (diff) |
Refactor libimagcontact to fit new store iterator interface
Diffstat (limited to 'lib')
-rw-r--r-- | lib/domain/libimagcontact/src/iter.rs | 5 | ||||
-rw-r--r-- | lib/domain/libimagcontact/src/store.rs | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/lib/domain/libimagcontact/src/iter.rs b/lib/domain/libimagcontact/src/iter.rs index 1f99c873..48f0f403 100644 --- a/lib/domain/libimagcontact/src/iter.rs +++ b/lib/domain/libimagcontact/src/iter.rs @@ -43,8 +43,9 @@ impl<'a> Iterator for ContactIter<'a> { fn next(&mut self) -> Option<Self::Item> { loop { match self.0.next() { - None => return None, - Some(sid) => match self.1.get(sid.clone()).map_err(From::from) { + None => return None, + Some(Err(e)) => return Some(Err(e).map_err(CE::from)), + Some(Ok(sid)) => match self.1.get(sid.clone()).map_err(From::from) { Err(e) => return Some(Err(e)), Ok(None) => return Some(Err(CE::from_kind(CEK::EntryNotFound(sid)))), Ok(Some(entry)) => match entry.is_contact().map_err(From::from) { diff --git a/lib/domain/libimagcontact/src/store.rs b/lib/domain/libimagcontact/src/store.rs index 88856b70..e2b9aea4 100644 --- a/lib/domain/libimagcontact/src/store.rs +++ b/lib/domain/libimagcontact/src/store.rs @@ -81,7 +81,10 @@ impl<'a> ContactStore<'a> for Store { let iter = self .entries()? .without_store() - .filter(|id| id.is_in_collection(&["contact"])); + .filter(|id| match *id { + Ok(ref id) => id.is_in_collection(&["contact"]), + Err(_) => true, + }); Ok(StoreIdIterator::new(Box::new(iter))) } |