haar_lib/iter/
reject.rs

1//! `reject`を提供する。
2
3/// `reject`を提供する。
4pub trait Reject: Iterator {
5    /// `predicate`に該当する要素を除外するイテレータを生成する。
6    fn reject<P>(self, mut predicate: P) -> impl Iterator<Item = Self::Item>
7    where
8        Self: Sized,
9        P: FnMut(&Self::Item) -> bool,
10    {
11        self.filter(move |a| !(predicate)(a))
12    }
13}
14
15impl<I> Reject for I where I: Iterator + ?Sized {}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn test() {
23        let a: Vec<_> = (1..=20).reject(|x| x % 3 == 0).collect();
24
25        assert_eq!(a, vec![1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20]);
26    }
27}