bool-logic 0.3.3

A library for manipulating and evaluating boolean expressions
Documentation
pub fn remove_if<T>(v: &mut Vec<T>, f: impl Fn(&T) -> bool) {
    v.retain(|expr| !f(expr));
}

pub fn drain_filter<'a, T, F>(v: &'a mut Vec<T>, mut f: F) -> impl Iterator<Item = T> + 'a
where
    F: FnMut(&mut T) -> bool + 'a,
{
    let mut i = 0;
    std::iter::from_fn(move || {
        while i < v.len() {
            if f(&mut v[i]) {
                return Some(v.remove(i));
            }
            i += 1;
        }
        None
    })
}