stdx/
vec.rs

1use crate::sealed::Sealed;
2
3use alloc::vec::Vec;
4
5pub trait VecExt<T>: Sealed {
6    fn remove_if<F>(&mut self, f: F)
7    where
8        F: FnMut(&mut T) -> bool;
9}
10
11impl<T> Sealed for Vec<T> {}
12
13impl<T> VecExt<T> for Vec<T> {
14    fn remove_if<F>(&mut self, mut f: F)
15    where
16        F: FnMut(&mut T) -> bool,
17    {
18        self.retain_mut(|x| !f(x));
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn test_remove_if() {
28        let mut vec = vec![1, 2, 3, 4, 5];
29        vec.remove_if(|x| *x % 2 == 0);
30        assert_eq!(vec, [1, 3, 5]);
31    }
32}