summaryrefslogtreecommitdiffstats
path: root/lib/core/libimagrt
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2019-02-05 01:10:46 +0100
committerMatthias Beyer <mail@beyermatthias.de>2019-02-11 03:22:56 +0100
commit751ce5af1a515594f96bcbe6ad744a05e85f2680 (patch)
tree440f268f426936c9b2759ba6cd1b7f85e5e694df /lib/core/libimagrt
parent8a4bc0eba41552a84b9c3d3df9e158c66cfe408b (diff)
Simplify implementation
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'lib/core/libimagrt')
-rw-r--r--lib/core/libimagrt/src/logger.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/core/libimagrt/src/logger.rs b/lib/core/libimagrt/src/logger.rs
index cf4f975e..e9526a35 100644
--- a/lib/core/libimagrt/src/logger.rs
+++ b/lib/core/libimagrt/src/logger.rs
@@ -263,18 +263,14 @@ fn translate_destination(raw: &str) -> Result<LogDestination> {
fn translate_destinations(raw: &Vec<Value>) -> Result<Vec<LogDestination>> {
raw.iter()
- .fold(Ok(vec![]), |acc, val| {
- acc.and_then(|mut v| {
- let dest = val.as_str()
- .ok_or_else(|| {
- let msg = "Type error at 'imag.logging.modules.<mod>.destinations', expected Array<String>";
- Error::from(err_msg(msg))
- })
- .and_then(translate_destination)?;
- v.push(dest);
- Ok(v)
- })
+ .map(|val| {
+ val.as_str()
+ .ok_or_else(|| "Type error at 'imag.logging.modules.<mod>.destinations', expected Array<String>")
+ .map_err(err_msg)
+ .map_err(Error::from)
+ .and_then(|s| translate_destination(s))
})
+ .collect()
}
fn aggregate_global_destinations(matches: &ArgMatches, config: Option<&Value>)