Trait resiter::flat_map::FlatMap

source ·
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§

source

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)]);
source

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)]
);

Implementors§

source§

impl<I, O, E> FlatMap<O, E> for Iwhere I: Iterator<Item = Result<O, E>> + Sized,