Crates.io | retain_mut |
lib.rs | retain_mut |
version | 0.1.9 |
source | src |
created_at | 2018-11-28 11:03:27.723096 |
updated_at | 2022-05-20 14:25:03.187237 |
description | Provide retain_mut method that has the same functionality as retain but gives mutable borrow to the predicate. |
homepage | |
repository | https://github.com/upsuper/retain_mut |
max_upload_size | |
id | 99055 |
size | 11,303 |
This crate has been deprecated.
Rust 1.61 stabilized retain_mut
for Vec
and VecDeque
,
so you can use them directly.
This crate is no longer maintained.
This crate provides trait RetainMut
which
provides retain_mut
method for Vec
and VecDeque
.
retain_mut
is basically the same as retain
except that
it gives mutable reference of items to the predicate function.
Since there is no reason retain
couldn't have been designed this way,
this crate basically just copies the code from std with minor changes
to hand out mutable reference.
The code these impls are based on can be found in code comments of this crate.
This was probably a historical mistake in Rust library,
that retain
should do this at the very beginning.
See rust-lang/rust#25477.
From Rust 1.58, an unstable retain_mut
method has been added to the std, see
rust-lang/rust#90829.
Once it gets stabilized, you can simply remove this crate.
Vec
let mut vec = vec![1, 2, 3, 4];
vec.retain_mut(|x| { *x *= 3; *x % 2 == 0 });
assert_eq!(vec, [6, 12]);
VecDeque
let mut deque = VecDeque::from(vec![1, 2, 3, 4]);
deque.retain_mut(|x| { *x *= 3; *x % 2 == 0 });
assert_eq!(deque, [6, 12]);