From 2366dee8e9cb41d963900c8d5128f810a87fc6bb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Adolfo=20Ochagav=C3=ADa?= Date: Mon, 19 Jan 2015 10:48:01 +0100 Subject: [PATCH] Make VecMap::into_iter consume the VecMap This is a breaking change. To fix it you should pass the VecMap by value instead of by reference. [breaking-change] --- src/libcollections/vec_map.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libcollections/vec_map.rs b/src/libcollections/vec_map.rs index d4ce266d3e2..94ae1bece86 100644 --- a/src/libcollections/vec_map.rs +++ b/src/libcollections/vec_map.rs @@ -265,7 +265,7 @@ pub fn iter_mut<'r>(&'r mut self) -> IterMut<'r, V> { } /// Returns an iterator visiting all key-value pairs in ascending order by - /// the keys, emptying (but not consuming) the original `VecMap`. + /// the keys, consuming the original `VecMap`. /// The iterator's element type is `(uint, &'r V)`. /// /// # Examples @@ -284,14 +284,13 @@ pub fn iter_mut<'r>(&'r mut self) -> IterMut<'r, V> { /// assert_eq!(vec, vec![(1, "a"), (2, "b"), (3, "c")]); /// ``` #[stable] - pub fn into_iter(&mut self) -> IntoIter { + pub fn into_iter(self) -> IntoIter { fn filter((i, v): (uint, Option)) -> Option<(uint, A)> { v.map(|v| (i, v)) } let filter: fn((uint, Option)) -> Option<(uint, V)> = filter; // coerce to fn ptr - let values = replace(&mut self.v, vec!()); - IntoIter { iter: values.into_iter().enumerate().filter_map(filter) } + IntoIter { iter: self.v.into_iter().enumerate().filter_map(filter) } } /// Return the number of elements in the map. -- 2.44.0