pub trait FlatMap<O, E>: Sized {
// Required methods
fn flat_map_ok<U, F, O2>(self, _: F) -> FlatMapOk<Self, U, F> ⓘ
where F: FnMut(O) -> U,
U: IntoIterator<Item = O2>;
fn flat_map_err<U, F, E2>(self, _: F) -> FlatMapErr<Self, U, F> ⓘ
where F: FnMut(E) -> U,
U: IntoIterator<Item = E2>;
}
Expand description
Extension trait for Iterator<Item = Result<O, E>>
to selectively transform Oks and Errors.
Required Methods§
Sourcefn flat_map_ok<U, F, O2>(self, _: F) -> FlatMapOk<Self, U, F> ⓘwhere
F: FnMut(O) -> U,
U: IntoIterator<Item = O2>,
fn flat_map_ok<U, F, O2>(self, _: F) -> FlatMapOk<Self, U, F> ⓘwhere
F: FnMut(O) -> U,
U: IntoIterator<Item = O2>,
flat_map every Ok
value and leave all Err
as is
use resiter::flat_map::FlatMap;
let mapped: Vec<_> = vec![Ok(1), Ok(2), Err(2), Err(0), Ok(2)]
.into_iter()
.flat_map_ok(|i| (0..i))
.collect();
assert_eq!(mapped, [Ok(0), Ok(0), Ok(1), Err(2), Err(0), Ok(0), Ok(1)]);
Sourcefn flat_map_err<U, F, E2>(self, _: F) -> FlatMapErr<Self, U, F> ⓘwhere
F: FnMut(E) -> U,
U: IntoIterator<Item = E2>,
fn flat_map_err<U, F, E2>(self, _: F) -> FlatMapErr<Self, U, F> ⓘwhere
F: FnMut(E) -> U,
U: IntoIterator<Item = E2>,
flat_map every Err
value and leave all Ok
as is
use resiter::flat_map::FlatMap;
let mapped: Vec<_> = vec![Ok(1), Ok(2), Err(2), Err(0), Ok(2)]
.into_iter()
.flat_map_err(|i| 0..(i * 2))
.collect();
assert_eq!(
mapped,
[Ok(1), Ok(2), Err(0), Err(1), Err(2), Err(3), Ok(2)]
);
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.