Add .retain() method

Based on "retain_mut" as discussed for vec: we can provide &mut to the
element to remove effortlessly.
This commit is contained in:
bluss
2016-02-17 23:08:46 +01:00
parent 49be63d9b8
commit c5589aecdf
2 changed files with 51 additions and 0 deletions
+17
View File
@@ -158,6 +158,23 @@ fn test_drain() {
assert_eq!(&v[..], &[]);
}
#[test]
fn test_retain() {
let mut v = ArrayVec::from([0; 8]);
for (i, elt) in v.iter_mut().enumerate() {
*elt = i;
}
v.retain(|_| true);
assert_eq!(&v[..], &[0, 1, 2, 3, 4, 5, 6, 7]);
v.retain(|elt| {
*elt /= 2;
*elt % 2 == 0
});
assert_eq!(&v[..], &[0, 0, 2, 2]);
v.retain(|_| false);
assert_eq!(&v[..], &[]);
}
#[test]
#[should_panic]
fn test_drain_oob() {