serenity 0.11.5

A Rust library for the Discord API.
Documentation
#[cfg(feature = "collector")]
#[rustversion::since(1.61)]
pub fn retain_mut<T>(vec: &mut Vec<T>, f: impl FnMut(&mut T) -> bool) {
    vec.retain_mut(f);
}

#[cfg(feature = "collector")]
#[rustversion::not(since(1.61))]
pub fn retain_mut<T>(vec: &mut Vec<T>, mut f: impl FnMut(&mut T) -> bool) {
    let len = vec.len();
    let mut del = 0;
    {
        let v = &mut **vec;

        for i in 0..len {
            if !f(&mut v[i]) {
                del += 1;
            } else if del > 0 {
                v.swap(i - del, i);
            }
        }
    }

    if del > 0 {
        vec.truncate(len - del);
    }
}