Trait resiter::ok_or_else::IterInnerOkOrElse
source · pub trait IterInnerOkOrElse<T, E, F>where
T: Sized,
E: Sized,
Self: Iterator<Item = Result<Option<T>, E>> + Sized,
F: Fn() -> E,{
// Required method
fn map_inner_ok_or_else(self, f: F) -> IterInnerOkOrElseImpl<Self, T, E, F> ⓘ;
}
Expand description
Extension trait for doing
Iterator<Item = Result<Option<T>, E>>
-> Iterator<Item = Result<T, E>>
Required Methods§
sourcefn map_inner_ok_or_else(self, f: F) -> IterInnerOkOrElseImpl<Self, T, E, F> ⓘ
fn map_inner_ok_or_else(self, f: F) -> IterInnerOkOrElseImpl<Self, T, E, F> ⓘ
Map option inside an ok result, fail with the else-value if None
use resiter::ok_or_else::IterInnerOkOrElse;
let v: Vec<Result<Option<i32>, &'static str>> = vec![
Ok(Some(1)),
Err("untouched err"),
Ok(None),
Ok(Some(4))];
let res: Vec<Result<i32, &'static str>> = v.into_iter()
.map_inner_ok_or_else(|| "error message")
.collect();
assert_eq!(
res,
vec![
Ok(1),
Err("untouched err"),
Err("error message"),
Ok(4)])