diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2019-02-05 01:10:46 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2019-02-11 03:22:56 +0100 |
commit | 751ce5af1a515594f96bcbe6ad744a05e85f2680 (patch) | |
tree | 440f268f426936c9b2759ba6cd1b7f85e5e694df /lib/core/libimagrt | |
parent | 8a4bc0eba41552a84b9c3d3df9e158c66cfe408b (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.rs | 18 |
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>) |