I just talked about the fact that I found Vec::retain a little bit too restrictive in the sense that it could have exposed a &mut T to the user instead of an immutable one.
Do you think that it could be ok to introduce a Vec::retain_mut method?
// implemented on Vec<T>
fn retain_mut<F>(&mut self, mut f: F) where F: FnMut(&mut T) -> bool;