diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-08-03 11:20:25 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-08-03 11:27:26 +0200 |
commit | 80491ff0b7ab183d23cf4a178c8c5d8fb8afef35 (patch) | |
tree | 31da710f883ac79d1acecd6a28f88f124b4597b1 /libimagentrylink | |
parent | f46e8ac5977a546425d8ba565de68adb3207a284 (diff) |
Replace map(unwrap()) with fold()
Diffstat (limited to 'libimagentrylink')
-rw-r--r-- | libimagentrylink/src/internal.rs | 19 |
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))) } |