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}