Trait VecRemoveIf

Source
pub trait VecRemoveIf<T> {
    // Required methods
    fn remove_if<F: Fn(&T) -> bool>(&mut self, closure: F) -> Vec<T>;
    fn swap_remove_if<F: Fn(&T) -> bool>(&mut self, closure: F) -> Vec<T>;
}
Expand description

Required Methods§

Source

fn remove_if<F: Fn(&T) -> bool>(&mut self, closure: F) -> Vec<T>

Run Vec::remove on each element in a vec when closure returns true

§Example
use vec_remove_if::VecRemoveIf;
let mut v = vec![1, 2, 3, 4, 5, 6, 7, 8];

assert_eq!(
    vec![1, 2, 3],
    v.remove_if(|e| e < &4)
);
assert_eq!(
    vec![4, 5, 6, 7, 8],
    v
);
Source

fn swap_remove_if<F: Fn(&T) -> bool>(&mut self, closure: F) -> Vec<T>

Run Vec::swap_remove on each element in a vec when closure returns true

Self::swap_remove_if is more efficient, but does not preserve the element order of the vector (See Vec::swap_remove).

§Example
use vec_remove_if::VecRemoveIf;
let mut v = vec![1, 2, 3, 4, 5, 6, 7, 8];

assert_eq!(
    vec![1, 2, 3],
    v.swap_remove_if(|e| e < &4)
);
assert_eq!(
    vec![8, 7, 6, 4, 5],
    v
 );

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.

Implementations on Foreign Types§

Source§

impl<T> VecRemoveIf<T> for Vec<T>

Source§

fn remove_if<F: Fn(&T) -> bool>(&mut self, closure: F) -> Vec<T>

Source§

fn swap_remove_if<F: Fn(&T) -> bool>(&mut self, closure: F) -> Vec<T>

Implementors§