From 1971a24441dc3ba102bccafdf997dd06f3b5487a Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Thu, 1 Jan 2015 22:33:39 -0500 Subject: [PATCH] std: fix fallout --- src/libstd/c_str.rs | 4 +++- src/libstd/collections/hash/map.rs | 28 +++++++++++++++++------- src/libstd/collections/hash/set.rs | 32 ++++++++++++++++++++-------- src/libstd/collections/hash/table.rs | 24 +++++++++++++++------ src/libstd/io/extensions.rs | 4 +++- src/libstd/io/fs.rs | 4 +++- src/libstd/io/mod.rs | 16 ++++++++++---- src/libstd/io/util.rs | 8 +++---- src/libstd/rand/mod.rs | 2 +- src/libstd/sync/mpsc/mod.rs | 4 +++- src/libstd/sync/mpsc/select.rs | 4 +++- 11 files changed, 93 insertions(+), 37 deletions(-) diff --git a/src/libstd/c_str.rs b/src/libstd/c_str.rs index b1433ad7fdc..834a9f082d0 100644 --- a/src/libstd/c_str.rs +++ b/src/libstd/c_str.rs @@ -504,7 +504,9 @@ pub struct CChars<'a> { marker: marker::ContravariantLifetime<'a>, } -impl<'a> Iterator for CChars<'a> { +impl<'a> Iterator for CChars<'a> { + type Item = libc::c_char; + fn next(&mut self) -> Option { let ch = unsafe { *self.ptr }; if ch == 0 { diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index d4fc4150fae..6450b149d02 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -1423,37 +1423,49 @@ enum VacantEntryState { } #[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); + #[inline] fn next(&mut self) -> Option<(&'a K, &'a V)> { self.inner.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[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); + #[inline] fn next(&mut self) -> Option<(&'a K, &'a mut V)> { self.inner.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl Iterator<(K, V)> for IntoIter { +impl Iterator for IntoIter { + type Item = (K, V); + #[inline] fn next(&mut self) -> Option<(K, V)> { self.inner.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[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; + #[inline] fn next(&mut self) -> Option<(&'a K)> { self.inner.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[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; + #[inline] fn next(&mut self) -> Option<(&'a V)> { self.inner.next() } #[inline] fn size_hint(&self) -> (uint, Option) { self.inner.size_hint() } } #[stable] -impl<'a, K: 'a, V: 'a> Iterator<(K, V)> for Drain<'a, K, V> { +impl<'a, K: 'a, V: 'a> Iterator for Drain<'a, K, V> { + type Item = (K, V); + #[inline] fn next(&mut self) -> Option<(K, V)> { self.inner.next() @@ -1511,7 +1523,7 @@ impl<'a, K, V> VacantEntry<'a, K, V> { #[stable] impl, V, S, H: Hasher + Default> FromIterator<(K, V)> for HashMap { - fn from_iter>(iter: T) -> HashMap { + fn from_iter>(iter: T) -> HashMap { let lower = iter.size_hint().0; let mut map = HashMap::with_capacity_and_hasher(lower, Default::default()); map.extend(iter); @@ -1521,7 +1533,7 @@ impl, V, S, H: Hasher + Default> FromIterator<(K, V)> for Has #[stable] impl, V, S, H: Hasher + Default> Extend<(K, V)> for HashMap { - fn extend>(&mut self, mut iter: T) { + fn extend>(&mut self, mut iter: T) { for (k, v) in iter { self.insert(k, v); } diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index 6132d288da2..ea8298c48c8 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -603,7 +603,7 @@ impl + fmt::Show, S, H: Hasher> fmt::Show for HashSet { #[stable] impl, S, H: Hasher + Default> FromIterator for HashSet { - fn from_iter>(iter: I) -> HashSet { + fn from_iter>(iter: I) -> HashSet { let lower = iter.size_hint().0; let mut set = HashSet::with_capacity_and_hasher(lower, Default::default()); set.extend(iter); @@ -613,7 +613,7 @@ impl, S, H: Hasher + Default> FromIterator for HashSet, S, H: Hasher + Default> Extend for HashSet { - fn extend>(&mut self, mut iter: I) { + fn extend>(&mut self, mut iter: I) { for k in iter { self.insert(k); } @@ -789,27 +789,35 @@ pub struct Union<'a, T: 'a, H: 'a> { } #[stable] -impl<'a, K> Iterator<&'a K> for Iter<'a, K> { +impl<'a, K> Iterator for Iter<'a, K> { + type Item = &'a K; + fn next(&mut self) -> Option<&'a K> { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl Iterator for IntoIter { +impl Iterator for IntoIter { + type Item = K; + fn next(&mut self) -> Option { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl<'a, K: 'a> Iterator for Drain<'a, K> { +impl<'a, K: 'a> Iterator for Drain<'a, K> { + type Item = K; + fn next(&mut self) -> Option { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } #[stable] -impl<'a, T, S, H> Iterator<&'a T> for Intersection<'a, T, H> +impl<'a, T, S, H> Iterator for Intersection<'a, T, H> where T: Eq + Hash, H: Hasher { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { loop { match self.iter.next() { @@ -828,9 +836,11 @@ impl<'a, T, S, H> Iterator<&'a T> for Intersection<'a, T, H> } #[stable] -impl<'a, T, S, H> Iterator<&'a T> for Difference<'a, T, H> +impl<'a, T, S, H> Iterator for Difference<'a, T, H> where T: Eq + Hash, H: Hasher { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { loop { match self.iter.next() { @@ -849,17 +859,21 @@ impl<'a, T, S, H> Iterator<&'a T> for Difference<'a, T, H> } #[stable] -impl<'a, T, S, H> Iterator<&'a T> for SymmetricDifference<'a, T, H> +impl<'a, T, S, H> Iterator for SymmetricDifference<'a, T, H> where T: Eq + Hash, H: Hasher { + 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, S, H> Iterator<&'a T> for Union<'a, T, H> +impl<'a, T, S, H> Iterator for Union<'a, T, H> where T: Eq + Hash, H: Hasher { + type Item = &'a T; + fn next(&mut self) -> Option<&'a T> { self.iter.next() } fn size_hint(&self) -> (uint, Option) { self.iter.size_hint() } } diff --git a/src/libstd/collections/hash/table.rs b/src/libstd/collections/hash/table.rs index a687ba3da8d..2b999d83a98 100644 --- a/src/libstd/collections/hash/table.rs +++ b/src/libstd/collections/hash/table.rs @@ -730,7 +730,9 @@ impl<'a, K, V> Clone for RawBuckets<'a, K, V> { } -impl<'a, K, V> Iterator> for RawBuckets<'a, K, V> { +impl<'a, K, V> Iterator for RawBuckets<'a, K, V> { + type Item = RawBucket; + fn next(&mut self) -> Option> { while self.raw.hash != self.hashes_end { unsafe { @@ -757,7 +759,9 @@ struct RevMoveBuckets<'a, K, V> { marker: marker::ContravariantLifetime<'a>, } -impl<'a, K, V> Iterator<(K, V)> for RevMoveBuckets<'a, K, V> { +impl<'a, K, V> Iterator for RevMoveBuckets<'a, K, V> { + type Item = (K, V); + fn next(&mut self) -> Option<(K, V)> { if self.elems_left == 0 { return None; @@ -816,7 +820,9 @@ pub struct Drain<'a, K: 'a, V: 'a> { iter: RawBuckets<'static, K, V>, } -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.iter.next().map(|bucket| { self.elems_left -= 1; @@ -832,7 +838,9 @@ impl<'a, K, V> Iterator<(&'a K, &'a V)> for Iter<'a, K, V> { } } -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.iter.next().map(|bucket| { self.elems_left -= 1; @@ -848,7 +856,9 @@ impl<'a, K, V> Iterator<(&'a K, &'a mut V)> for IterMut<'a, K, V> { } } -impl Iterator<(SafeHash, K, V)> for IntoIter { +impl Iterator for IntoIter { + type Item = (SafeHash, K, V); + fn next(&mut self) -> Option<(SafeHash, K, V)> { self.iter.next().map(|bucket| { self.table.size -= 1; @@ -870,7 +880,9 @@ impl Iterator<(SafeHash, K, V)> for IntoIter { } } -impl<'a, K: 'a, V: 'a> Iterator<(SafeHash, K, V)> for Drain<'a, K, V> { +impl<'a, K: 'a, V: 'a> Iterator for Drain<'a, K, V> { + type Item = (SafeHash, K, V); + #[inline] fn next(&mut self) -> Option<(SafeHash, K, V)> { self.iter.next().map(|bucket| { diff --git a/src/libstd/io/extensions.rs b/src/libstd/io/extensions.rs index 94dba1f7cc7..8c097a65db7 100644 --- a/src/libstd/io/extensions.rs +++ b/src/libstd/io/extensions.rs @@ -52,7 +52,9 @@ impl<'r, R: Reader> Bytes<'r, R> { } } -impl<'r, R: Reader> Iterator> for Bytes<'r, R> { +impl<'r, R: Reader> Iterator for Bytes<'r, R> { + type Item = IoResult; + #[inline] fn next(&mut self) -> Option> { match self.reader.read_byte() { diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index 7fa5b3cfac7..1ff54fcb484 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -563,7 +563,9 @@ pub struct Directories { stack: Vec, } -impl Iterator for Directories { +impl Iterator for Directories { + type Item = Path; + fn next(&mut self) -> Option { match self.stack.pop() { Some(path) => { diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 0a7815aeb53..4c9c7beb475 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1371,7 +1371,9 @@ pub struct Lines<'r, T:'r> { buffer: &'r mut T, } -impl<'r, T: Buffer> Iterator> for Lines<'r, T> { +impl<'r, T: Buffer> Iterator for Lines<'r, T> { + type Item = IoResult; + fn next(&mut self) -> Option> { match self.buffer.read_line() { Ok(x) => Some(Ok(x)), @@ -1398,7 +1400,9 @@ pub struct Chars<'r, T:'r> { buffer: &'r mut T } -impl<'r, T: Buffer> Iterator> for Chars<'r, T> { +impl<'r, T: Buffer> Iterator for Chars<'r, T> { + type Item = IoResult; + fn next(&mut self) -> Option> { match self.buffer.read_char() { Ok(x) => Some(Ok(x)), @@ -1649,14 +1653,18 @@ pub struct IncomingConnections<'a, Sized? A:'a> { } #[cfg(stage0)] -impl<'a, T, A: Acceptor> Iterator> for IncomingConnections<'a, A> { +impl<'a, T, A: Acceptor> Iterator for IncomingConnections<'a, A> { + type Item = IoResult; + fn next(&mut self) -> Option> { Some(self.inc.accept()) } } #[cfg(not(stage0))] -impl<'a, T, Sized? A: Acceptor> Iterator> for IncomingConnections<'a, A> { +impl<'a, T, Sized? A: Acceptor> Iterator for IncomingConnections<'a, A> { + type Item = IoResult; + fn next(&mut self) -> Option> { Some(self.inc.accept()) } diff --git a/src/libstd/io/util.rs b/src/libstd/io/util.rs index 38ab71c172c..51d1bacf63b 100644 --- a/src/libstd/io/util.rs +++ b/src/libstd/io/util.rs @@ -169,7 +169,7 @@ pub struct ChainedReader { cur_reader: Option, } -impl> ChainedReader { +impl> ChainedReader { /// Creates a new `ChainedReader` pub fn new(mut readers: I) -> ChainedReader { let r = readers.next(); @@ -177,7 +177,7 @@ impl> ChainedReader { } } -impl> Reader for ChainedReader { +impl> Reader for ChainedReader { fn read(&mut self, buf: &mut [u8]) -> io::IoResult { loop { let err = match self.cur_reader { @@ -252,7 +252,7 @@ pub struct IterReader { iter: T, } -impl> IterReader { +impl> IterReader { /// Creates a new `IterReader` which will read from the specified /// `Iterator`. pub fn new(iter: T) -> IterReader { @@ -260,7 +260,7 @@ impl> IterReader { } } -impl> Reader for IterReader { +impl> Reader for IterReader { #[inline] fn read(&mut self, buf: &mut [u8]) -> io::IoResult { let mut len = 0; diff --git a/src/libstd/rand/mod.rs b/src/libstd/rand/mod.rs index 86b8bfc7370..208e4f9e566 100644 --- a/src/libstd/rand/mod.rs +++ b/src/libstd/rand/mod.rs @@ -404,7 +404,7 @@ pub fn random() -> T { /// let sample = sample(&mut rng, range(1i, 100), 5); /// println!("{}", sample); /// ``` -pub fn sample, R: Rng>(rng: &mut R, +pub fn sample, R: Rng>(rng: &mut R, mut iter: I, amount: uint) -> Vec { let mut reservoir: Vec = iter.by_ref().take(amount).collect(); diff --git a/src/libstd/sync/mpsc/mod.rs b/src/libstd/sync/mpsc/mod.rs index 413675f26d5..e9dc3d986ba 100644 --- a/src/libstd/sync/mpsc/mod.rs +++ b/src/libstd/sync/mpsc/mod.rs @@ -936,7 +936,9 @@ impl select::Packet for Receiver { } #[unstable] -impl<'a, T: Send> Iterator for Iter<'a, T> { +impl<'a, T: Send> Iterator for Iter<'a, T> { + type Item = T; + fn next(&mut self) -> Option { self.rx.recv().ok() } } diff --git a/src/libstd/sync/mpsc/select.rs b/src/libstd/sync/mpsc/select.rs index 43554d7c335..3d9dca7e21c 100644 --- a/src/libstd/sync/mpsc/select.rs +++ b/src/libstd/sync/mpsc/select.rs @@ -319,7 +319,9 @@ impl<'rx, T: Send> Drop for Handle<'rx, T> { } } -impl Iterator<*mut Handle<'static, ()>> for Packets { +impl Iterator for Packets { + type Item = *mut Handle<'static, ()>; + fn next(&mut self) -> Option<*mut Handle<'static, ()>> { if self.cur.is_null() { None