I'd like to remove some elements from a Vec
, but vec.iter().filter().collect()
creates a new vector with borrowed items.
I'd like to mutate the original Vec
without extra memory allocation (and keep memory of removed elements as an extra capacity of the vector).
If you want to remove elements, you can use retain()
, which removes elements from the vector if the closure returns false
:
let mut vec = vec![1, 2, 3, 4]; vec.retain(|&x| x % 2 == 0); assert_eq!(vec, [2, 4]);
If you want to modify the elements in place, you have to do that in a for x in vec.iter_mut()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With