Replace map(unwrap()) with fold()
This commit is contained in:
parent
f46e8ac597
commit
80491ff0b7
1 changed files with 13 additions and 6 deletions
|
@ -7,7 +7,6 @@ use libimagstore::store::Result as StoreResult;
|
||||||
use libimagerror::into::IntoError;
|
use libimagerror::into::IntoError;
|
||||||
|
|
||||||
use error::LinkErrorKind as LEK;
|
use error::LinkErrorKind as LEK;
|
||||||
use error::MapErrInto;
|
|
||||||
use result::Result;
|
use result::Result;
|
||||||
|
|
||||||
use toml::Value;
|
use toml::Value;
|
||||||
|
@ -50,11 +49,19 @@ impl InternalLinker for Entry {
|
||||||
new_links.push(link);
|
new_links.push(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
let new_links = links_into_values(new_links);
|
let new_links = try!(links_into_values(new_links)
|
||||||
if new_links.iter().any(|o| o.is_none()) {
|
.into_iter()
|
||||||
return Err(LEK::InternalConversionError.into());
|
.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)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
let new_links = new_links.into_iter().map(|o| o.unwrap()).collect();
|
})
|
||||||
|
}));
|
||||||
process_rw_result(self.get_header_mut().set("imag.links", Value::Array(new_links)))
|
process_rw_result(self.get_header_mut().set("imag.links", Value::Array(new_links)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue