]> git.lizzy.rs Git - rust.git/commitdiff
Make VecMap::into_iter consume the VecMap
authorAdolfo Ochagavía <aochagavia92@gmail.com>
Mon, 19 Jan 2015 09:48:01 +0000 (10:48 +0100)
committerAdolfo Ochagavía <aochagavia92@gmail.com>
Mon, 19 Jan 2015 09:48:01 +0000 (10:48 +0100)
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

index d4ce266d3e211b5ed45c7ebc2b7faaba5ab24389..94ae1bece86f7bc5dd51e70bf0f7387cee2af598 100644 (file)
@@ -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<V> {
+    pub fn into_iter(self) -> IntoIter<V> {
         fn filter<A>((i, v): (uint, Option<A>)) -> Option<(uint, A)> {
             v.map(|v| (i, v))
         }
         let filter: fn((uint, Option<V>)) -> 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.