1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
//! Various helper functions for managing collections.

/// Deletes from `vec` only the element `i` such that the corresponding `mask[i]` is `true`.
pub fn filter_from_mask<T: Copy>(mask: &[bool], vec: &mut Vec<T>) {
    let mut i = 0;

    vec.retain(|_| {
        let delete = mask[i];
        i += 1;
        !delete
    })
}