summaryrefslogtreecommitdiffstats
path: root/libimagentrylink
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-08-03 11:20:25 +0200
committerMatthias Beyer <mail@beyermatthias.de>2016-08-03 11:27:26 +0200
commit80491ff0b7ab183d23cf4a178c8c5d8fb8afef35 (patch)
tree31da710f883ac79d1acecd6a28f88f124b4597b1 /libimagentrylink
parentf46e8ac5977a546425d8ba565de68adb3207a284 (diff)
Replace map(unwrap()) with fold()
Diffstat (limited to 'libimagentrylink')
-rw-r--r--libimagentrylink/src/internal.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/libimagentrylink/src/internal.rs b/libimagentrylink/src/internal.rs
index d93b14c2..3e8c1161 100644
--- a/libimagentrylink/src/internal.rs
+++ b/libimagentrylink/src/internal.rs
@@ -7,7 +7,6 @@ use libimagstore::store::Result as StoreResult;
use libimagerror::into::IntoError;
use error::LinkErrorKind as LEK;
-use error::MapErrInto;
use result::Result;
use toml::Value;
@@ -50,11 +49,19 @@ impl InternalLinker for Entry {
new_links.push(link);
}
- let new_links = links_into_values(new_links);
- if new_links.iter().any(|o| o.is_none()) {
- return Err(LEK::InternalConversionError.into());
- }
- let new_links = new_links.into_iter().map(|o| o.unwrap()).collect();
+ let new_links = try!(links_into_values(new_links)
+ .into_iter()
+ .fold(Ok(vec![]), |acc, elem| {
+ acc.and_then(move |mut v| {
+ match elem {
+ None => Err(LEK::InternalConversionError.into()),
+ Some(e) => {
+ v.push(e);
+ Ok(v)
+ },
+ }
+ })
+ }));
process_rw_result(self.get_header_mut().set("imag.links", Value::Array(new_links)))
}