Use ::fold_defresult() instead of ::fold()

This commit is contained in:
Matthias Beyer 2017-02-26 19:40:59 +01:00
parent ef07c2cba9
commit c8faf5a6a9

View file

@ -20,6 +20,7 @@
use toml::Value;
use libimagerror::into::IntoError;
use libimagutil::iter::FoldResult;
use store::Result;
@ -86,15 +87,11 @@ pub fn config_is_valid(config: &Option<Value>) -> Result<()> {
})
.and_then(|t| match *t {
Value::Array(ref a) => {
a.iter().fold(Ok(()), |acc, elem| {
acc.and_then(|_| {
if is_match!(*elem, Value::String(_)) {
a.iter().fold_defresult(|elem| if is_match!(*elem, Value::String(_)) {
Ok(())
} else {
let cause = Box::new(kind.into_error());
Err(SEK::ConfigTypeError.into_error_with_cause(cause))
}
})
})
},
_ => {
@ -125,8 +122,7 @@ pub fn config_is_valid(config: &Option<Value>) -> Result<()> {
})
.and_then(|section_table| match *section_table { // which is
Value::Table(ref section_table) => // a table
section_table.iter().fold(Ok(()), |acc, (inner_key, cfg)| {
acc.and_then(|_| {
section_table.iter().fold_defresult(|(inner_key, cfg)| {
match *cfg {
Value::Table(ref hook_config) => { // are tables
// with a key
@ -147,7 +143,6 @@ pub fn config_is_valid(config: &Option<Value>) -> Result<()> {
Err(SEK::ConfigKeyMissingError.into_error())
}
}
})
}),
_ => {
warn!("Store config expects '{}' to be a Table, but isn't.", section);