From 6b116bedafe29b7876b95575451c92452a1ec72b Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Thu, 1 Jan 2015 23:15:35 -0500 Subject: [PATCH] collections: fix fallout --- src/libcollections/binary_heap.rs | 28 +++++++++------ src/libcollections/bit.rs | 42 +++++++++++++++-------- src/libcollections/btree/map.rs | 57 +++++++++++++++++++------------ src/libcollections/btree/node.rs | 20 ++++++----- src/libcollections/btree/set.rs | 37 +++++++++++++------- src/libcollections/dlist.rs | 25 ++++++++------ src/libcollections/enum_set.rs | 8 +++-- src/libcollections/ring_buf.rs | 38 +++++++++++++-------- src/libcollections/slice.rs | 8 +++-- src/libcollections/str.rs | 12 +++++-- src/libcollections/string.rs | 8 ++--- src/libcollections/vec.rs | 24 +++++++------ src/libcollections/vec_map.rs | 28 +++++++++------ 13 files changed, 211 insertions(+), 124 deletions(-) diff --git a/src/libcollections/binary_heap.rs b/src/libcollections/binary_heap.rs index f748c8ad1eb..da461ae2d4d 100644 --- a/src/libcollections/binary_heap.rs +++ b/src/libcollections/binary_heap.rs @@ -573,7 +573,9 @@ impl<'a, T> Clone for Iter<'a, T> { } #[stable] -impl<'a, T> Iterator<&'a T> for Iter<'a, T> { +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + #[inline] fn next(&mut self) -> Option<&'a T> { self.iter.next() } @@ -582,13 +584,13 @@ impl<'a, T> Iterator<&'a T> for Iter<'a, T> { } #[stable] -impl<'a, T> DoubleEndedIterator<&'a T> for Iter<'a, T> { +impl<'a, T> DoubleEndedIterator for Iter<'a, T> { #[inline] fn next_back(&mut self) -> Option<&'a T> { self.iter.next_back() } } #[stable] -impl<'a, T> ExactSizeIterator<&'a T> for Iter<'a, T> {} +impl<'a, T> ExactSizeIterator for Iter<'a, T> {} /// An iterator that moves out of a `BinaryHeap`. pub struct IntoIter { @@ -596,7 +598,9 @@ pub struct IntoIter { } #[stable] -impl Iterator for IntoIter { +impl Iterator for IntoIter { + type Item = T; + #[inline] fn next(&mut self) -> Option { self.iter.next() } @@ -605,13 +609,13 @@ impl Iterator for IntoIter { } #[stable] -impl DoubleEndedIterator for IntoIter { +impl DoubleEndedIterator for IntoIter { #[inline] fn next_back(&mut self) -> Option { self.iter.next_back() } } #[stable] -impl ExactSizeIterator for IntoIter {} +impl ExactSizeIterator for IntoIter {} /// An iterator that drains a `BinaryHeap`. pub struct Drain<'a, T: 'a> { @@ -619,7 +623,9 @@ pub struct Drain<'a, T: 'a> { } #[stable] -impl<'a, T: 'a> Iterator for Drain<'a, T> { +impl<'a, T: 'a> Iterator for Drain<'a, T> { + type Item = T; + #[inline] fn next(&mut self) -> Option { self.iter.next() } @@ -628,24 +634,24 @@ impl<'a, T: 'a> Iterator for Drain<'a, T> { } #[stable] -impl<'a, T: 'a> DoubleEndedIterator for Drain<'a, T> { +impl<'a, T: 'a> DoubleEndedIterator for Drain<'a, T> { #[inline] fn next_back(&mut self) -> Option { self.iter.next_back() } } #[stable] -impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {} +impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {} #[stable] impl FromIterator for BinaryHeap { - fn from_iter>(iter: Iter) -> BinaryHeap { + fn from_iter>(iter: Iter) -> BinaryHeap { BinaryHeap::from_vec(iter.collect()) } } #[stable] impl Extend for BinaryHeap { - fn extend>(&mut self, mut iter: Iter) { + fn extend>(&mut self, mut iter: Iter) { let (lower, _) = iter.size_hint(); self.reserve(lower); diff --git a/src/libcollections/bit.rs b/src/libcollections/bit.rs index a5b8c5f3e57..5c52223bccd 100644 --- a/src/libcollections/bit.rs +++ b/src/libcollections/bit.rs @@ -938,7 +938,7 @@ impl Default for Bitv { #[stable] impl FromIterator for Bitv { - fn from_iter>(iterator: I) -> Bitv { + fn from_iter>(iterator: I) -> Bitv { let mut ret = Bitv::new(); ret.extend(iterator); ret @@ -948,7 +948,7 @@ impl FromIterator for Bitv { #[stable] impl Extend for Bitv { #[inline] - fn extend>(&mut self, mut iterator: I) { + fn extend>(&mut self, mut iterator: I) { let (min, _) = iterator.size_hint(); self.reserve(min); for element in iterator { @@ -1031,7 +1031,9 @@ pub struct Iter<'a> { } #[stable] -impl<'a> Iterator for Iter<'a> { +impl<'a> Iterator for Iter<'a> { + type Item = bool; + #[inline] fn next(&mut self) -> Option { if self.next_idx != self.end_idx { @@ -1050,7 +1052,7 @@ impl<'a> Iterator for Iter<'a> { } #[stable] -impl<'a> DoubleEndedIterator for Iter<'a> { +impl<'a> DoubleEndedIterator for Iter<'a> { #[inline] fn next_back(&mut self) -> Option { if self.next_idx != self.end_idx { @@ -1063,10 +1065,10 @@ impl<'a> DoubleEndedIterator for Iter<'a> { } #[stable] -impl<'a> ExactSizeIterator for Iter<'a> {} +impl<'a> ExactSizeIterator for Iter<'a> {} #[stable] -impl<'a> RandomAccessIterator for Iter<'a> { +impl<'a> RandomAccessIterator for Iter<'a> { #[inline] fn indexable(&self) -> uint { self.end_idx - self.next_idx @@ -1134,7 +1136,7 @@ impl Default for BitvSet { #[stable] impl FromIterator for BitvSet { - fn from_iter>(iterator: I) -> BitvSet { + fn from_iter>(iterator: I) -> BitvSet { let mut ret = BitvSet::new(); ret.extend(iterator); ret @@ -1144,7 +1146,7 @@ impl FromIterator for BitvSet { #[stable] impl Extend for BitvSet { #[inline] - fn extend>(&mut self, mut iterator: I) { + fn extend>(&mut self, mut iterator: I) { for i in iterator { self.insert(i); } @@ -1792,7 +1794,9 @@ pub struct Difference<'a>(TwoBitPositions<'a>); pub struct SymmetricDifference<'a>(TwoBitPositions<'a>); #[stable] -impl<'a> Iterator for SetIter<'a> { +impl<'a> Iterator for SetIter<'a> { + type Item = uint; + fn next(&mut self) -> Option { while self.next_idx < self.set.bitv.len() { let idx = self.next_idx; @@ -1813,7 +1817,9 @@ impl<'a> Iterator for SetIter<'a> { } #[stable] -impl<'a> Iterator for TwoBitPositions<'a> { +impl<'a> Iterator for TwoBitPositions<'a> { + type Item = uint; + fn next(&mut self) -> Option { while self.next_idx < self.set.bitv.len() || self.next_idx < self.other.bitv.len() { @@ -1849,25 +1855,33 @@ impl<'a> Iterator for TwoBitPositions<'a> { } #[stable] -impl<'a> Iterator for Union<'a> { +impl<'a> Iterator for Union<'a> { + type Item = uint; + #[inline] fn next(&mut self) -> Option { self.0.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.0.size_hint() } } #[stable] -impl<'a> Iterator for Intersection<'a> { +impl<'a> Iterator for Intersection<'a> { + type Item = uint; + #[inline] fn next(&mut self) -> Option { self.0.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.0.size_hint() } } #[stable] -impl<'a> Iterator for Difference<'a> { +impl<'a> Iterator for Difference<'a> { + type Item = uint; + #[inline] fn next(&mut self) -> Option { self.0.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.0.size_hint() } } #[stable] -impl<'a> Iterator for SymmetricDifference<'a> { +impl<'a> Iterator for SymmetricDifference<'a> { + type Item = uint; + #[inline] fn next(&mut self) -> Option { self.0.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.0.size_hint() } } diff --git a/src/libcollections/btree/map.rs b/src/libcollections/btree/map.rs index da98c19e888..13178893723 100644 --- a/src/libcollections/btree/map.rs +++ b/src/libcollections/btree/map.rs @@ -823,7 +823,7 @@ mod stack { #[stable] impl FromIterator<(K, V)> for BTreeMap { - fn from_iter>(iter: T) -> BTreeMap { + fn from_iter>(iter: T) -> BTreeMap { let mut map = BTreeMap::new(); map.extend(iter); map @@ -833,7 +833,7 @@ impl FromIterator<(K, V)> for BTreeMap { #[stable] impl Extend<(K, V)> for BTreeMap { #[inline] - fn extend>(&mut self, mut iter: T) { + fn extend>(&mut self, mut iter: T) { for (k, v) in iter { self.insert(k, v); } @@ -949,8 +949,11 @@ enum StackOp { Pop, } -impl + DoubleEndedIterator>> - Iterator<(K, V)> for AbsIter { +impl Iterator for AbsIter where + T: DoubleEndedIterator + Iterator> + Traverse, +{ + type Item = (K, V); + // This function is pretty long, but only because there's a lot of cases to consider. // Our iterator represents two search paths, left and right, to the smallest and largest // elements we have yet to yield. lca represents the least common ancestor of these two paths, @@ -1015,8 +1018,9 @@ impl + DoubleEndedIterator>> } } -impl + DoubleEndedIterator>> - DoubleEndedIterator<(K, V)> for AbsIter { +impl DoubleEndedIterator for AbsIter where + T: DoubleEndedIterator + Iterator> + Traverse, +{ // next_back is totally symmetric to next fn next_back(&mut self) -> Option<(K, V)> { loop { @@ -1054,64 +1058,75 @@ impl + DoubleEndedIterator>> } #[stable] -impl<'a, K, V> Iterator<(&'a K, &'a V)> for Iter<'a, K, V> { +impl<'a, K, V> Iterator for Iter<'a, K, V> { + type Item = (&'a K, &'a V); + fn next(&mut self) -> Option<(&'a K, &'a V)> { self.inner.next() } fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl<'a, K, V> DoubleEndedIterator<(&'a K, &'a V)> for Iter<'a, K, V> { +impl<'a, K, V> DoubleEndedIterator for Iter<'a, K, V> { fn next_back(&mut self) -> Option<(&'a K, &'a V)> { self.inner.next_back() } } #[stable] -impl<'a, K, V> ExactSizeIterator<(&'a K, &'a V)> for Iter<'a, K, V> {} +impl<'a, K, V> ExactSizeIterator for Iter<'a, K, V> {} #[stable] -impl<'a, K, V> Iterator<(&'a K, &'a mut V)> for IterMut<'a, K, V> { +impl<'a, K, V> Iterator for IterMut<'a, K, V> { + type Item = (&'a K, &'a mut V); + fn next(&mut self) -> Option<(&'a K, &'a mut V)> { self.inner.next() } fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl<'a, K, V> DoubleEndedIterator<(&'a K, &'a mut V)> for IterMut<'a, K, V> { +impl<'a, K, V> DoubleEndedIterator for IterMut<'a, K, V> { fn next_back(&mut self) -> Option<(&'a K, &'a mut V)> { self.inner.next_back() } } #[stable] -impl<'a, K, V> ExactSizeIterator<(&'a K, &'a mut V)> for IterMut<'a, K, V> {} +impl<'a, K, V> ExactSizeIterator for IterMut<'a, K, V> {} #[stable] -impl Iterator<(K, V)> for IntoIter { +impl Iterator for IntoIter { + type Item = (K, V); + fn next(&mut self) -> Option<(K, V)> { self.inner.next() } fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl DoubleEndedIterator<(K, V)> for IntoIter { +impl DoubleEndedIterator for IntoIter { fn next_back(&mut self) -> Option<(K, V)> { self.inner.next_back() } } #[stable] -impl ExactSizeIterator<(K, V)> for IntoIter {} +impl ExactSizeIterator for IntoIter {} #[stable] -impl<'a, K, V> Iterator<&'a K> for Keys<'a, K, V> { +impl<'a, K, V> Iterator for Keys<'a, K, V> { + type Item = &'a K; + fn next(&mut self) -> Option<(&'a K)> { self.inner.next() } fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl<'a, K, V> DoubleEndedIterator<&'a K> for Keys<'a, K, V> { +impl<'a, K, V> DoubleEndedIterator for Keys<'a, K, V> { fn next_back(&mut self) -> Option<(&'a K)> { self.inner.next_back() } } #[stable] -impl<'a, K, V> ExactSizeIterator<&'a K> for Keys<'a, K, V> {} +impl<'a, K, V> ExactSizeIterator for Keys<'a, K, V> {} + #[stable] -impl<'a, K, V> Iterator<&'a V> for Values<'a, K, V> { +impl<'a, K, V> Iterator for Values<'a, K, V> { + type Item = &'a V; + fn next(&mut self) -> Option<(&'a V)> { self.inner.next() } fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl<'a, K, V> DoubleEndedIterator<&'a V> for Values<'a, K, V> { +impl<'a, K, V> DoubleEndedIterator for Values<'a, K, V> { fn next_back(&mut self) -> Option<(&'a V)> { self.inner.next_back() } } #[stable] -impl<'a, K, V> ExactSizeIterator<&'a V> for Values<'a, K, V> {} +impl<'a, K, V> ExactSizeIterator for Values<'a, K, V> {} impl<'a, K: Ord, V> VacantEntry<'a, K, V> { diff --git a/src/libcollections/btree/node.rs b/src/libcollections/btree/node.rs index 3dddcae11ce..f50650c2c8b 100644 --- a/src/libcollections/btree/node.rs +++ b/src/libcollections/btree/node.rs @@ -210,7 +210,9 @@ impl RawItems { } } -impl Iterator for RawItems { +impl Iterator for RawItems { + type Item = T; + fn next(&mut self) -> Option { if self.head == self.tail { None @@ -230,7 +232,7 @@ impl Iterator for RawItems { } } -impl DoubleEndedIterator for RawItems { +impl DoubleEndedIterator for RawItems { fn next_back(&mut self) -> Option { if self.head == self.tail { None @@ -1321,8 +1323,10 @@ trait TraversalImpl { /// as no deallocation needs to be done. struct ElemsAndEdges(Elems, Edges); -impl, Edges: DoubleEndedIterator> - TraversalImpl for ElemsAndEdges { +impl + TraversalImpl for ElemsAndEdges + where Elems : Iterator, Edges : Iterator +{ fn next_kv(&mut self) -> Option<(K, V)> { self.0.next() } fn next_kv_back(&mut self) -> Option<(K, V)> { self.0.next_back() } @@ -1414,8 +1418,8 @@ pub type MutTraversal<'a, K, V> = AbsTraversal = AbsTraversal>; -impl> - Iterator> for AbsTraversal { +impl> Iterator for AbsTraversal { + type Item = TraversalItem; fn next(&mut self) -> Option> { let head_is_edge = self.head_is_edge; @@ -1429,9 +1433,7 @@ impl> } } -impl> - DoubleEndedIterator> for AbsTraversal { - +impl> DoubleEndedIterator for AbsTraversal { fn next_back(&mut self) -> Option> { let tail_is_edge = self.tail_is_edge; self.tail_is_edge = !tail_is_edge; diff --git a/src/libcollections/btree/set.rs b/src/libcollections/btree/set.rs index 3e8988530e6..6512243ed1a 100644 --- a/src/libcollections/btree/set.rs +++ b/src/libcollections/btree/set.rs @@ -436,7 +436,7 @@ impl BTreeSet { #[stable] impl FromIterator for BTreeSet { - fn from_iter>(iter: Iter) -> BTreeSet { + fn from_iter>(iter: Iter) -> BTreeSet { let mut set = BTreeSet::new(); set.extend(iter); set @@ -446,7 +446,7 @@ impl FromIterator for BTreeSet { #[stable] impl Extend for BTreeSet { #[inline] - fn extend>(&mut self, mut iter: Iter) { + fn extend>(&mut self, mut iter: Iter) { for elem in iter { self.insert(elem); } @@ -560,28 +560,33 @@ impl Show for BTreeSet { } #[stable] -impl<'a, T> Iterator<&'a T> for Iter<'a, T> { +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl<'a, T> DoubleEndedIterator<&'a T> for Iter<'a, T> { +impl<'a, T> DoubleEndedIterator for Iter<'a, T> { fn next_back(&mut self) -> Option<&'a T> { self.iter.next_back() } } #[stable] -impl<'a, T> ExactSizeIterator<&'a T> for Iter<'a, T> {} +impl<'a, T> ExactSizeIterator for Iter<'a, T> {} + #[stable] -impl Iterator for IntoIter { +impl Iterator for IntoIter { + type Item = T; + fn next(&mut self) -> Option { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl DoubleEndedIterator for IntoIter { +impl DoubleEndedIterator for IntoIter { fn next_back(&mut self) -> Option { self.iter.next_back() } } #[stable] -impl ExactSizeIterator for IntoIter {} +impl ExactSizeIterator for IntoIter {} /// Compare `x` and `y`, but return `short` if x is None and `long` if y is None fn cmp_opt(x: Option<&T>, y: Option<&T>, @@ -594,7 +599,9 @@ fn cmp_opt(x: Option<&T>, y: Option<&T>, } #[stable] -impl<'a, T: Ord> Iterator<&'a T> for Difference<'a, T> { +impl<'a, T: Ord> Iterator for Difference<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { loop { match cmp_opt(self.a.peek(), self.b.peek(), Less, Less) { @@ -607,7 +614,9 @@ impl<'a, T: Ord> Iterator<&'a T> for Difference<'a, T> { } #[stable] -impl<'a, T: Ord> Iterator<&'a T> for SymmetricDifference<'a, T> { +impl<'a, T: Ord> Iterator for SymmetricDifference<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { loop { match cmp_opt(self.a.peek(), self.b.peek(), Greater, Less) { @@ -620,7 +629,9 @@ impl<'a, T: Ord> Iterator<&'a T> for SymmetricDifference<'a, T> { } #[stable] -impl<'a, T: Ord> Iterator<&'a T> for Intersection<'a, T> { +impl<'a, T: Ord> Iterator for Intersection<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { loop { let o_cmp = match (self.a.peek(), self.b.peek()) { @@ -639,7 +650,9 @@ impl<'a, T: Ord> Iterator<&'a T> for Intersection<'a, T> { } #[stable] -impl<'a, T: Ord> Iterator<&'a T> for Union<'a, T> { +impl<'a, T: Ord> Iterator for Union<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { loop { match cmp_opt(self.a.peek(), self.b.peek(), Greater, Less) { diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index 68acbfcb3c3..b3d61f44563 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -508,7 +508,9 @@ impl Drop for DList { } #[stable] -impl<'a, A> Iterator<&'a A> for Iter<'a, A> { +impl<'a, A> Iterator for Iter<'a, A> { + type Item = &'a A; + #[inline] fn next(&mut self) -> Option<&'a A> { if self.nelem == 0 { @@ -528,7 +530,7 @@ impl<'a, A> Iterator<&'a A> for Iter<'a, A> { } #[stable] -impl<'a, A> DoubleEndedIterator<&'a A> for Iter<'a, A> { +impl<'a, A> DoubleEndedIterator for Iter<'a, A> { #[inline] fn next_back(&mut self) -> Option<&'a A> { if self.nelem == 0 { @@ -543,10 +545,11 @@ impl<'a, A> DoubleEndedIterator<&'a A> for Iter<'a, A> { } #[stable] -impl<'a, A> ExactSizeIterator<&'a A> for Iter<'a, A> {} +impl<'a, A> ExactSizeIterator for Iter<'a, A> {} #[stable] -impl<'a, A> Iterator<&'a mut A> for IterMut<'a, A> { +impl<'a, A> Iterator for IterMut<'a, A> { + type Item = &'a mut A; #[inline] fn next(&mut self) -> Option<&'a mut A> { if self.nelem == 0 { @@ -569,7 +572,7 @@ impl<'a, A> Iterator<&'a mut A> for IterMut<'a, A> { } #[stable] -impl<'a, A> DoubleEndedIterator<&'a mut A> for IterMut<'a, A> { +impl<'a, A> DoubleEndedIterator for IterMut<'a, A> { #[inline] fn next_back(&mut self) -> Option<&'a mut A> { if self.nelem == 0 { @@ -584,7 +587,7 @@ impl<'a, A> DoubleEndedIterator<&'a mut A> for IterMut<'a, A> { } #[stable] -impl<'a, A> ExactSizeIterator<&'a mut A> for IterMut<'a, A> {} +impl<'a, A> ExactSizeIterator for IterMut<'a, A> {} /// Allows mutating a `DList` while iterating. #[deprecated = "Trait is deprecated, use inherent methods on the iterator instead"] @@ -676,7 +679,9 @@ impl<'a, A> IterMut<'a, A> { } #[stable] -impl Iterator for IntoIter { +impl Iterator for IntoIter { + type Item = A; + #[inline] fn next(&mut self) -> Option { self.list.pop_front() } @@ -687,14 +692,14 @@ impl Iterator for IntoIter { } #[stable] -impl DoubleEndedIterator for IntoIter { +impl DoubleEndedIterator for IntoIter { #[inline] fn next_back(&mut self) -> Option { self.list.pop_back() } } #[stable] impl FromIterator for DList { - fn from_iter>(iterator: T) -> DList { + fn from_iter>(iterator: T) -> DList { let mut ret = DList::new(); ret.extend(iterator); ret @@ -703,7 +708,7 @@ impl FromIterator for DList { #[stable] impl Extend for DList { - fn extend>(&mut self, mut iterator: T) { + fn extend>(&mut self, mut iterator: T) { for elt in iterator { self.push_back(elt); } } } diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs index ea3d8659f54..1d6caf2ccee 100644 --- a/src/libcollections/enum_set.rs +++ b/src/libcollections/enum_set.rs @@ -231,7 +231,9 @@ impl Iter { } } -impl Iterator for Iter { +impl Iterator for Iter { + type Item = E; + fn next(&mut self) -> Option { if self.bits == 0 { return None; @@ -254,7 +256,7 @@ impl Iterator for Iter { } impl FromIterator for EnumSet { - fn from_iter>(iterator: I) -> EnumSet { + fn from_iter>(iterator: I) -> EnumSet { let mut ret = EnumSet::new(); ret.extend(iterator); ret @@ -262,7 +264,7 @@ impl FromIterator for EnumSet { } impl Extend for EnumSet { - fn extend>(&mut self, mut iterator: I) { + fn extend>(&mut self, mut iterator: I) { for element in iterator { self.insert(element); } diff --git a/src/libcollections/ring_buf.rs b/src/libcollections/ring_buf.rs index e4c9e51a845..eb58edbe453 100644 --- a/src/libcollections/ring_buf.rs +++ b/src/libcollections/ring_buf.rs @@ -1151,7 +1151,9 @@ impl<'a, T> Clone for Iter<'a, T> { } #[stable] -impl<'a, T> Iterator<&'a T> for Iter<'a, T> { +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + #[inline] fn next(&mut self) -> Option<&'a T> { if self.tail == self.head { @@ -1170,7 +1172,7 @@ impl<'a, T> Iterator<&'a T> for Iter<'a, T> { } #[stable] -impl<'a, T> DoubleEndedIterator<&'a T> for Iter<'a, T> { +impl<'a, T> DoubleEndedIterator for Iter<'a, T> { #[inline] fn next_back(&mut self) -> Option<&'a T> { if self.tail == self.head { @@ -1182,10 +1184,10 @@ impl<'a, T> DoubleEndedIterator<&'a T> for Iter<'a, T> { } #[stable] -impl<'a, T> ExactSizeIterator<&'a T> for Iter<'a, T> {} +impl<'a, T> ExactSizeIterator for Iter<'a, T> {} #[stable] -impl<'a, T> RandomAccessIterator<&'a T> for Iter<'a, T> { +impl<'a, T> RandomAccessIterator for Iter<'a, T> { #[inline] fn indexable(&self) -> uint { let (len, _) = self.size_hint(); @@ -1217,7 +1219,9 @@ pub struct IterMut<'a, T:'a> { } #[stable] -impl<'a, T> Iterator<&'a mut T> for IterMut<'a, T> { +impl<'a, T> Iterator for IterMut<'a, T> { + type Item = &'a mut T; + #[inline] fn next(&mut self) -> Option<&'a mut T> { if self.tail == self.head { @@ -1239,7 +1243,7 @@ impl<'a, T> Iterator<&'a mut T> for IterMut<'a, T> { } #[stable] -impl<'a, T> DoubleEndedIterator<&'a mut T> for IterMut<'a, T> { +impl<'a, T> DoubleEndedIterator for IterMut<'a, T> { #[inline] fn next_back(&mut self) -> Option<&'a mut T> { if self.tail == self.head { @@ -1254,7 +1258,7 @@ impl<'a, T> DoubleEndedIterator<&'a mut T> for IterMut<'a, T> { } #[stable] -impl<'a, T> ExactSizeIterator<&'a mut T> for IterMut<'a, T> {} +impl<'a, T> ExactSizeIterator for IterMut<'a, T> {} /// A by-value RingBuf iterator #[stable] @@ -1263,7 +1267,9 @@ pub struct IntoIter { } #[stable] -impl Iterator for IntoIter { +impl Iterator for IntoIter { + type Item = T; + #[inline] fn next(&mut self) -> Option { self.inner.pop_front() @@ -1277,7 +1283,7 @@ impl Iterator for IntoIter { } #[stable] -impl DoubleEndedIterator for IntoIter { +impl DoubleEndedIterator for IntoIter { #[inline] fn next_back(&mut self) -> Option { self.inner.pop_back() @@ -1285,7 +1291,7 @@ impl DoubleEndedIterator for IntoIter { } #[stable] -impl ExactSizeIterator for IntoIter {} +impl ExactSizeIterator for IntoIter {} /// A draining RingBuf iterator #[unstable = "matches collection reform specification, waiting for dust to settle"] @@ -1304,7 +1310,9 @@ impl<'a, T: 'a> Drop for Drain<'a, T> { } #[stable] -impl<'a, T: 'a> Iterator for Drain<'a, T> { +impl<'a, T: 'a> Iterator for Drain<'a, T> { + type Item = T; + #[inline] fn next(&mut self) -> Option { self.inner.pop_front() @@ -1318,7 +1326,7 @@ impl<'a, T: 'a> Iterator for Drain<'a, T> { } #[stable] -impl<'a, T: 'a> DoubleEndedIterator for Drain<'a, T> { +impl<'a, T: 'a> DoubleEndedIterator for Drain<'a, T> { #[inline] fn next_back(&mut self) -> Option { self.inner.pop_back() @@ -1326,7 +1334,7 @@ impl<'a, T: 'a> DoubleEndedIterator for Drain<'a, T> { } #[stable] -impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {} +impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {} #[stable] impl PartialEq for RingBuf { @@ -1382,7 +1390,7 @@ impl IndexMut for RingBuf { #[stable] impl FromIterator for RingBuf { - fn from_iter>(iterator: T) -> RingBuf { + fn from_iter>(iterator: T) -> RingBuf { let (lower, _) = iterator.size_hint(); let mut deq = RingBuf::with_capacity(lower); deq.extend(iterator); @@ -1392,7 +1400,7 @@ impl FromIterator for RingBuf { #[stable] impl Extend for RingBuf { - fn extend>(&mut self, mut iterator: T) { + fn extend>(&mut self, mut iterator: T) { for elt in iterator { self.push_back(elt); } diff --git a/src/libcollections/slice.rs b/src/libcollections/slice.rs index 1c1b48f8cef..92bdf0be378 100644 --- a/src/libcollections/slice.rs +++ b/src/libcollections/slice.rs @@ -1140,7 +1140,9 @@ struct SizeDirection { dir: Direction, } -impl Iterator<(uint, uint)> for ElementSwaps { +impl Iterator for ElementSwaps { + type Item = (uint, uint); + #[inline] fn next(&mut self) -> Option<(uint, uint)> { fn new_pos(i: uint, s: Direction) -> uint { @@ -1207,7 +1209,9 @@ pub struct Permutations { } #[unstable = "trait is unstable"] -impl Iterator> for Permutations { +impl Iterator for Permutations { + type Item = Vec; + #[inline] fn next(&mut self) -> Option> { match self.swaps.next() { diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index 129ba77d9f7..7f35e5fd1ca 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -181,7 +181,9 @@ pub struct Decompositions<'a> { sorted: bool } -impl<'a> Iterator for Decompositions<'a> { +impl<'a> Iterator for Decompositions<'a> { + type Item = char; + #[inline] fn next(&mut self) -> Option { match self.buffer.first() { @@ -268,7 +270,9 @@ pub struct Recompositions<'a> { last_ccc: Option } -impl<'a> Iterator for Recompositions<'a> { +impl<'a> Iterator for Recompositions<'a> { + type Item = char; + #[inline] fn next(&mut self) -> Option { loop { @@ -357,7 +361,9 @@ pub struct Utf16Units<'a> { encoder: Utf16Encoder> } -impl<'a> Iterator for Utf16Units<'a> { +impl<'a> Iterator for Utf16Units<'a> { + type Item = u16; + #[inline] fn next(&mut self) -> Option { self.encoder.next() } diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index 769679ec4d4..99273d9575b 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -781,7 +781,7 @@ impl fmt::Show for FromUtf16Error { #[experimental = "waiting on FromIterator stabilization"] impl FromIterator for String { - fn from_iter>(iterator: I) -> String { + fn from_iter>(iterator: I) -> String { let mut buf = String::new(); buf.extend(iterator); buf @@ -790,7 +790,7 @@ impl FromIterator for String { #[experimental = "waiting on FromIterator stabilization"] impl<'a> FromIterator<&'a str> for String { - fn from_iter>(iterator: I) -> String { + fn from_iter>(iterator: I) -> String { let mut buf = String::new(); buf.extend(iterator); buf @@ -799,7 +799,7 @@ impl<'a> FromIterator<&'a str> for String { #[experimental = "waiting on Extend stabilization"] impl Extend for String { - fn extend>(&mut self, mut iterator: I) { + fn extend>(&mut self, mut iterator: I) { let (lower_bound, _) = iterator.size_hint(); self.reserve(lower_bound); for ch in iterator { @@ -810,7 +810,7 @@ impl Extend for String { #[experimental = "waiting on Extend stabilization"] impl<'a> Extend<&'a str> for String { - fn extend>(&mut self, mut iterator: I) { + fn extend>(&mut self, mut iterator: I) { // A guess that at least one byte per iterator element will be needed. let (lower_bound, _) = iterator.size_hint(); self.reserve(lower_bound); diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 7e367927421..cba2824cf9b 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -1164,7 +1164,7 @@ impl Vec { /// Deprecated: use `unzip` directly on the iterator instead. #[deprecated = "use unzip directly on the iterator instead"] -pub fn unzip>(iter: V) -> (Vec, Vec) { +pub fn unzip>(iter: V) -> (Vec, Vec) { iter.unzip() } @@ -1317,7 +1317,7 @@ impl ops::DerefMut for Vec { #[experimental = "waiting on FromIterator stability"] impl FromIterator for Vec { #[inline] - fn from_iter>(mut iterator: I) -> Vec { + fn from_iter>(mut iterator: I) -> Vec { let (lower, _) = iterator.size_hint(); let mut vector = Vec::with_capacity(lower); for element in iterator { @@ -1330,7 +1330,7 @@ impl FromIterator for Vec { #[experimental = "waiting on Extend stability"] impl Extend for Vec { #[inline] - fn extend>(&mut self, mut iterator: I) { + fn extend>(&mut self, mut iterator: I) { let (lower, _) = iterator.size_hint(); self.reserve(lower); for element in iterator { @@ -1506,7 +1506,7 @@ impl<'a> fmt::Writer for Vec { pub type CowVec<'a, T> = Cow<'a, Vec, [T]>; impl<'a, T> FromIterator for CowVec<'a, T> where T: Clone { - fn from_iter>(it: I) -> CowVec<'a, T> { + fn from_iter>(it: I) -> CowVec<'a, T> { Cow::Owned(FromIterator::from_iter(it)) } } @@ -1557,7 +1557,9 @@ impl IntoIter { pub fn unwrap(self) -> Vec { self.into_inner() } } -impl Iterator for IntoIter { +impl Iterator for IntoIter { + type Item = T; + #[inline] fn next<'a>(&'a mut self) -> Option { unsafe { @@ -1591,7 +1593,7 @@ impl Iterator for IntoIter { } } -impl DoubleEndedIterator for IntoIter { +impl DoubleEndedIterator for IntoIter { #[inline] fn next_back<'a>(&'a mut self) -> Option { unsafe { @@ -1614,7 +1616,7 @@ impl DoubleEndedIterator for IntoIter { } } -impl ExactSizeIterator for IntoIter {} +impl ExactSizeIterator for IntoIter {} #[unsafe_destructor] impl Drop for IntoIter { @@ -1638,7 +1640,9 @@ pub struct Drain<'a, T> { marker: ContravariantLifetime<'a>, } -impl<'a, T> Iterator for Drain<'a, T> { +impl<'a, T> Iterator for Drain<'a, T> { + type Item = T; + #[inline] fn next(&mut self) -> Option { unsafe { @@ -1672,7 +1676,7 @@ impl<'a, T> Iterator for Drain<'a, T> { } } -impl<'a, T> DoubleEndedIterator for Drain<'a, T> { +impl<'a, T> DoubleEndedIterator for Drain<'a, T> { #[inline] fn next_back(&mut self) -> Option { unsafe { @@ -1695,7 +1699,7 @@ impl<'a, T> DoubleEndedIterator for Drain<'a, T> { } } -impl<'a, T> ExactSizeIterator for Drain<'a, T> {} +impl<'a, T> ExactSizeIterator for Drain<'a, T> {} #[unsafe_destructor] impl<'a, T> Drop for Drain<'a, T> { diff --git a/src/libcollections/vec_map.rs b/src/libcollections/vec_map.rs index 172fd56ed39..bf0c8f10e5f 100644 --- a/src/libcollections/vec_map.rs +++ b/src/libcollections/vec_map.rs @@ -546,7 +546,7 @@ impl fmt::Show for VecMap { #[stable] impl FromIterator<(uint, V)> for VecMap { - fn from_iter>(iter: Iter) -> VecMap { + fn from_iter>(iter: Iter) -> VecMap { let mut map = VecMap::new(); map.extend(iter); map @@ -555,7 +555,7 @@ impl FromIterator<(uint, V)> for VecMap { #[stable] impl Extend<(uint, V)> for VecMap { - fn extend>(&mut self, mut iter: Iter) { + fn extend>(&mut self, mut iter: Iter) { for (k, v) in iter { self.insert(k, v); } @@ -581,7 +581,9 @@ impl IndexMut for VecMap { macro_rules! iterator { (impl $name:ident -> $elem:ty, $($getter:ident),+) => { #[stable] - impl<'a, V> Iterator<$elem> for $name<'a, V> { + impl<'a, V> Iterator for $name<'a, V> { + type Item = $elem; + #[inline] fn next(&mut self) -> Option<$elem> { while self.front < self.back { @@ -614,7 +616,7 @@ macro_rules! iterator { macro_rules! double_ended_iterator { (impl $name:ident -> $elem:ty, $($getter:ident),+) => { #[stable] - impl<'a, V> DoubleEndedIterator<$elem> for $name<'a, V> { + impl<'a, V> DoubleEndedIterator for $name<'a, V> { #[inline] fn next_back(&mut self) -> Option<$elem> { while self.front < self.back { @@ -713,32 +715,38 @@ pub struct IntoIter { } #[stable] -impl<'a, V> Iterator for Keys<'a, V> { +impl<'a, V> Iterator for Keys<'a, V> { + type Item = uint; + fn next(&mut self) -> Option { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl<'a, V> DoubleEndedIterator for Keys<'a, V> { +impl<'a, V> DoubleEndedIterator for Keys<'a, V> { fn next_back(&mut self) -> Option { self.iter.next_back() } } #[stable] -impl<'a, V> Iterator<&'a V> for Values<'a, V> { +impl<'a, V> Iterator for Values<'a, V> { + type Item = &'a V; + fn next(&mut self) -> Option<(&'a V)> { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl<'a, V> DoubleEndedIterator<&'a V> for Values<'a, V> { +impl<'a, V> DoubleEndedIterator for Values<'a, V> { fn next_back(&mut self) -> Option<(&'a V)> { self.iter.next_back() } } #[stable] -impl Iterator<(uint, V)> for IntoIter { +impl Iterator for IntoIter { + type Item = (uint, V); + fn next(&mut self) -> Option<(uint, V)> { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl DoubleEndedIterator<(uint, V)> for IntoIter { +impl DoubleEndedIterator for IntoIter { fn next_back(&mut self) -> Option<(uint, V)> { self.iter.next_back() } }