Trait that provides
This method is basically the same as
but it gives mutable borrow to the predicate function.
This was probably a historical mistake in Rust library,
retain should do this at the very beginning.
It currently only implements
We may implement it for more collection types in the future.