Trait resiter::filter::Filter

source ·
pub trait Filter<O, E>: Sized {
    // Required methods
    fn filter_ok<F>(self, _: F) -> FilterOk<Self, F> 
       where F: FnMut(&O) -> bool;
    fn filter_err<F>(self, _: F) -> FilterErr<Self, F> 
       where F: FnMut(&E) -> bool;
}
Expand description

Extension trait for Iterator<Item = Result<O, E>> to filter one kind of result (and leaving the other as is)

Required Methods§

source

fn filter_ok<F>(self, _: F) -> FilterOk<Self, F> where F: FnMut(&O) -> bool,

Filter Ok items while keeping Err

use resiter::filter::Filter;
use std::str::FromStr;

let mapped: Vec<_> = ["1", "2", "a", "4", "5"]
    .iter()
    .map(|txt| usize::from_str(txt))
    .filter_ok(|i| i % 2 == 0)
    .collect();
assert_eq!(mapped.len(), 3);
assert_eq!(mapped[0], Ok(2));
assert!(mapped[1].is_err());
assert_eq!(mapped[2], Ok(4))
source

fn filter_err<F>(self, _: F) -> FilterErr<Self, F> where F: FnMut(&E) -> bool,

Filter Err values while keeping Ok

use resiter::filter::Filter;
use std::str::FromStr;

let mapped: Vec<_> = ["1", "2", "a", "4", "5"]
    .iter()
    .map(|txt| usize::from_str(txt))
    .filter_err(|_| false)
    .collect();

assert_eq!(mapped, vec![Ok(1), Ok(2), Ok(4), Ok(5)]);

Implementors§

source§

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