diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index 1d21d2d18e4..77ce27476fd 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -15,7 +15,7 @@ use borrow::Borrow; use cmp::max; use fmt::{self, Debug}; use hash::{Hash, SipHasher, BuildHasher}; -use iter::{self, Map, FromIterator}; +use iter::FromIterator; use mem::{self, replace}; use ops::{Deref, Index}; use rand::{self, Rng}; @@ -836,8 +836,7 @@ impl HashMap /// ``` #[stable(feature = "rust1", since = "1.0.0")] pub fn keys<'a>(&'a self) -> Keys<'a, K, V> { - fn first((a, _): (A, B)) -> A { a } - Keys { inner: self.iter().map(first) } + Keys { inner: self.iter() } } /// An iterator visiting all values in arbitrary order. @@ -859,8 +858,7 @@ impl HashMap /// ``` #[stable(feature = "rust1", since = "1.0.0")] pub fn values<'a>(&'a self) -> Values<'a, K, V> { - fn second((_, b): (A, B)) -> B { b } - Values { inner: self.iter().map(second) } + Values { inner: self.iter() } } /// An iterator visiting all key-value pairs in arbitrary order. @@ -992,9 +990,8 @@ impl HashMap #[inline] #[stable(feature = "drain", since = "1.6.0")] pub fn drain(&mut self) -> Drain { - fn last_two((_, b, c): (A, B, C)) -> (B, C) { (b, c) } Drain { - inner: self.table.drain().map(last_two), + inner: self.table.drain(), } } @@ -1224,13 +1221,13 @@ pub struct IterMut<'a, K: 'a, V: 'a> { /// HashMap move iterator. #[stable(feature = "rust1", since = "1.0.0")] pub struct IntoIter { - inner: iter::Map, fn((SafeHash, K, V)) -> (K, V)> + inner: table::IntoIter } /// HashMap keys iterator. #[stable(feature = "rust1", since = "1.0.0")] pub struct Keys<'a, K: 'a, V: 'a> { - inner: Map, fn((&'a K, &'a V)) -> &'a K> + inner: Iter<'a, K, V> } // FIXME(#19839) Remove in favor of `#[derive(Clone)]` @@ -1246,7 +1243,7 @@ impl<'a, K, V> Clone for Keys<'a, K, V> { /// HashMap values iterator. #[stable(feature = "rust1", since = "1.0.0")] pub struct Values<'a, K: 'a, V: 'a> { - inner: Map, fn((&'a K, &'a V)) -> &'a V> + inner: Iter<'a, K, V> } // FIXME(#19839) Remove in favor of `#[derive(Clone)]` @@ -1262,7 +1259,7 @@ impl<'a, K, V> Clone for Values<'a, K, V> { /// HashMap drain iterator. #[stable(feature = "drain", since = "1.6.0")] pub struct Drain<'a, K: 'a, V: 'a> { - inner: iter::Map, fn((SafeHash, K, V)) -> (K, V)> + inner: table::Drain<'a, K, V> } enum InternalEntry { @@ -1397,9 +1394,8 @@ impl IntoIterator for HashMap /// let vec: Vec<(&str, isize)> = map.into_iter().collect(); /// ``` fn into_iter(self) -> IntoIter { - fn last_two((_, b, c): (A, B, C)) -> (B, C) { (b, c) } IntoIter { - inner: self.table.into_iter().map(last_two) + inner: self.table.into_iter() } } } @@ -1432,7 +1428,7 @@ impl<'a, K, V> ExactSizeIterator for IterMut<'a, K, V> { impl Iterator for IntoIter { type Item = (K, V); - #[inline] fn next(&mut self) -> Option<(K, V)> { self.inner.next() } + #[inline] fn next(&mut self) -> Option<(K, V)> { self.inner.next().map(|(_, k, v)| (k, v)) } #[inline] fn size_hint(&self) -> (usize, Option) { self.inner.size_hint() } } #[stable(feature = "rust1", since = "1.0.0")] @@ -1444,7 +1440,7 @@ impl ExactSizeIterator for IntoIter { impl<'a, K, V> Iterator for Keys<'a, K, V> { type Item = &'a K; - #[inline] fn next(&mut self) -> Option<(&'a K)> { self.inner.next() } + #[inline] fn next(&mut self) -> Option<(&'a K)> { self.inner.next().map(|(k, _)| k) } #[inline] fn size_hint(&self) -> (usize, Option) { self.inner.size_hint() } } #[stable(feature = "rust1", since = "1.0.0")] @@ -1456,7 +1452,7 @@ impl<'a, K, V> ExactSizeIterator for Keys<'a, K, V> { impl<'a, K, V> Iterator for Values<'a, K, V> { type Item = &'a V; - #[inline] fn next(&mut self) -> Option<(&'a V)> { self.inner.next() } + #[inline] fn next(&mut self) -> Option<(&'a V)> { self.inner.next().map(|(_, v)| v) } #[inline] fn size_hint(&self) -> (usize, Option) { self.inner.size_hint() } } #[stable(feature = "rust1", since = "1.0.0")] @@ -1468,7 +1464,7 @@ impl<'a, K, V> ExactSizeIterator for Values<'a, K, V> { impl<'a, K, V> Iterator for Drain<'a, K, V> { type Item = (K, V); - #[inline] fn next(&mut self) -> Option<(K, V)> { self.inner.next() } + #[inline] fn next(&mut self) -> Option<(K, V)> { self.inner.next().map(|(_, k, v)| (k, v)) } #[inline] fn size_hint(&self) -> (usize, Option) { self.inner.size_hint() } } #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index 24dfcb1a9b7..7e79aef300b 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -11,7 +11,7 @@ use borrow::Borrow; use fmt; use hash::{Hash, BuildHasher}; -use iter::{Map, Chain, FromIterator}; +use iter::{Chain, FromIterator}; use ops::{BitOr, BitAnd, BitXor, Sub}; use super::Recover; @@ -414,8 +414,7 @@ impl HashSet #[inline] #[stable(feature = "drain", since = "1.6.0")] pub fn drain(&mut self) -> Drain { - fn first((a, _): (A, B)) -> A { a } - Drain { iter: self.map.drain().map(first) } + Drain { iter: self.map.drain() } } /// Clears the set, removing all values. @@ -809,13 +808,13 @@ pub struct Iter<'a, K: 'a> { /// HashSet move iterator #[stable(feature = "rust1", since = "1.0.0")] pub struct IntoIter { - iter: Map, fn((K, ())) -> K> + iter: map::IntoIter } /// HashSet drain iterator #[stable(feature = "rust1", since = "1.0.0")] pub struct Drain<'a, K: 'a> { - iter: Map, fn((K, ())) -> K>, + iter: map::Drain<'a, K, ()>, } /// Intersection iterator @@ -889,8 +888,7 @@ impl IntoIterator for HashSet /// } /// ``` fn into_iter(self) -> IntoIter { - fn first((a, _): (A, B)) -> A { a } - IntoIter { iter: self.map.into_iter().map(first) } + IntoIter { iter: self.map.into_iter() } } } @@ -914,7 +912,7 @@ impl<'a, K> ExactSizeIterator for Iter<'a, K> { impl Iterator for IntoIter { type Item = K; - fn next(&mut self) -> Option { self.iter.next() } + fn next(&mut self) -> Option { self.iter.next().map(|(k, _)| k) } fn size_hint(&self) -> (usize, Option) { self.iter.size_hint() } } #[stable(feature = "rust1", since = "1.0.0")] @@ -926,7 +924,7 @@ impl ExactSizeIterator for IntoIter { impl<'a, K> Iterator for Drain<'a, K> { type Item = K; - fn next(&mut self) -> Option { self.iter.next() } + fn next(&mut self) -> Option { self.iter.next().map(|(k, _)| k) } fn size_hint(&self) -> (usize, Option) { self.iter.size_hint() } } #[stable(feature = "rust1", since = "1.0.0")]