summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2018-04-30 17:28:54 +0200
committerMatthias Beyer <mail@beyermatthias.de>2018-05-01 17:44:00 +0200
commit8f03b4a71ab173041e2ab740c2a268bfd0666d2d (patch)
tree245c40c44097cc7df2e9ba7c7c2742d0afe8f5c6 /lib
parenta2ff298e672694a4204d0989c364d5ecb3599f55 (diff)
Refactor libimagcontact to fit new store iterator interface
Diffstat (limited to 'lib')
-rw-r--r--lib/domain/libimagcontact/src/iter.rs5
-rw-r--r--lib/domain/libimagcontact/src/store.rs5
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)))
}