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§
Sourcefn filter_ok<F>(self, _: F) -> FilterOk<Self, F> ⓘ
fn filter_ok<F>(self, _: F) -> FilterOk<Self, F> ⓘ
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))
Sourcefn filter_err<F>(self, _: F) -> FilterErr<Self, F> ⓘ
fn filter_err<F>(self, _: F) -> FilterErr<Self, F> ⓘ
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)]);
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.