Skip to content

Commit eee285e

Browse files
author
bors-servo
authored
Auto merge of #61 - Xaeroxe:patch-1, r=mbrubeck
[breaking change] Update retain to use &mut instead of & <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-smallvec/61) <!-- Reviewable:end -->
2 parents 115e425 + 505833c commit eee285e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -638,11 +638,11 @@ impl<A: Array> SmallVec<A> {
638638
/// In other words, remove all elements `e` such that `f(&e)` returns `false`.
639639
/// This method operates in place and preserves the order of the retained
640640
/// elements.
641-
pub fn retain<F: FnMut(&A::Item) -> bool>(&mut self, mut f: F) {
641+
pub fn retain<F: FnMut(&mut A::Item) -> bool>(&mut self, mut f: F) {
642642
let mut del = 0;
643643
let len = self.len;
644644
for i in 0..len {
645-
if !f(&self[i]) {
645+
if !f(&mut self[i]) {
646646
del += 1;
647647
} else if del > 0 {
648648
self.swap(i - del, i);
@@ -1652,15 +1652,15 @@ pub mod tests {
16521652
fn test_retain() {
16531653
// Test inline data storate
16541654
let mut sv: SmallVec<[i32; 5]> = SmallVec::from_slice(&[1, 2, 3, 3, 4]);
1655-
sv.retain(|&i| i != 3);
1655+
sv.retain(|&mut i| i != 3);
16561656
assert_eq!(sv.pop(), Some(4));
16571657
assert_eq!(sv.pop(), Some(2));
16581658
assert_eq!(sv.pop(), Some(1));
16591659
assert_eq!(sv.pop(), None);
16601660

16611661
// Test spilled data storage
16621662
let mut sv: SmallVec<[i32; 3]> = SmallVec::from_slice(&[1, 2, 3, 3, 4]);
1663-
sv.retain(|&i| i != 3);
1663+
sv.retain(|&mut i| i != 3);
16641664
assert_eq!(sv.pop(), Some(4));
16651665
assert_eq!(sv.pop(), Some(2));
16661666
assert_eq!(sv.pop(), Some(1));

0 commit comments

Comments
 (0)