36 lines
921 B
Rust
36 lines
921 B
Rust
|
macro_rules! push_error {
|
||
|
($value:expr, $errors:expr) => {
|
||
|
match $value {
|
||
|
Err(error) => { $errors.push(error); None },
|
||
|
Ok(value) => Some(value)
|
||
|
}
|
||
|
};
|
||
|
($value:expr, $errors:expr, $path:expr) => {
|
||
|
match $value {
|
||
|
Err(error) => { $errors.push(error.with_path($path)); None },
|
||
|
Ok(value) => Some(value)
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
macro_rules! append_errors {
|
||
|
($value:expr, $errors:expr) => {
|
||
|
match $value {
|
||
|
Err(mut err) => { $errors.append(&mut err); None },
|
||
|
Ok(value) => Some(value)
|
||
|
}
|
||
|
};
|
||
|
($value:expr, $errors:expr, $path:expr) => {
|
||
|
match $value {
|
||
|
Err(err) => { $errors.extend(err.into_iter().map(|e| {
|
||
|
e.with_path($path)
|
||
|
})); None },
|
||
|
Ok(value) => Some(value)
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
|
||
|
pub(crate) use append_errors;
|
||
|
pub(crate) use push_error;
|