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}