diff options
| author | bors <bors@rust-lang.org> | 2014-11-08 21:06:37 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-11-08 21:06:37 +0000 |
| commit | f0ca717c643cbef31859e443ee20db4465ac8864 (patch) | |
| tree | 05190af84acccdfc795368a8e2431ab3f43038b5 /src | |
| parent | b80edf1d1257bf521fd9e62b732b6302258374e7 (diff) | |
| parent | a11f16739f08ec480263ba549d510fffc8ce557e (diff) | |
| download | rust-f0ca717c643cbef31859e443ee20db4465ac8864.tar.gz rust-f0ca717c643cbef31859e443ee20db4465ac8864.zip | |
auto merge of #18475 : gamazeps/rust/toExtend, r=alexcrichton
Ensured that Extend & FromIterator are implemented for the libcollection. Removed the fact that FromIterator had to be implemented in order to implement Extend, as it did not make sense for LruCache (it needs to be given a size and there are no Default for LruCache). Changed the name from Extend to Extendable. Part of #18424
Diffstat (limited to 'src')
26 files changed, 57 insertions, 31 deletions
diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index cec97a3ec88..25d3b4bf272 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -93,7 +93,7 @@ syn keyword rustEnum Ordering syn keyword rustEnumVariant Less Equal Greater syn keyword rustTrait Collection Mutable Map MutableMap MutableSeq syn keyword rustTrait Set MutableSet -syn keyword rustTrait FromIterator Extendable ExactSize +syn keyword rustTrait FromIterator IntoIterator Extend ExactSize syn keyword rustTrait Iterator DoubleEndedIterator syn keyword rustTrait RandomAccessIterator CloneableIterator syn keyword rustTrait OrdIterator MutableDoubleEndedIterator diff --git a/src/libcollections/binary_heap.rs b/src/libcollections/binary_heap.rs index c9d60077449..88e1e4ffc22 100644 --- a/src/libcollections/binary_heap.rs +++ b/src/libcollections/binary_heap.rs @@ -555,7 +555,7 @@ impl<T: Ord> FromIterator<T> for BinaryHeap<T> { } } -impl<T: Ord> Extendable<T> for BinaryHeap<T> { +impl<T: Ord> Extend<T> for BinaryHeap<T> { fn extend<Iter: Iterator<T>>(&mut self, mut iter: Iter) { let (lower, _) = iter.size_hint(); diff --git a/src/libcollections/bit.rs b/src/libcollections/bit.rs index 833cfc04c55..6ed9dad6252 100644 --- a/src/libcollections/bit.rs +++ b/src/libcollections/bit.rs @@ -835,7 +835,7 @@ impl FromIterator<bool> for Bitv { } } -impl Extendable<bool> for Bitv { +impl Extend<bool> for Bitv { #[inline] fn extend<I: Iterator<bool>>(&mut self, mut iterator: I) { let (min, _) = iterator.size_hint(); @@ -1014,7 +1014,7 @@ impl FromIterator<bool> for BitvSet { } } -impl Extendable<bool> for BitvSet { +impl Extend<bool> for BitvSet { #[inline] fn extend<I: Iterator<bool>>(&mut self, iterator: I) { let &BitvSet(ref mut self_bitv) = self; diff --git a/src/libcollections/btree/map.rs b/src/libcollections/btree/map.rs index 9b644115f30..57ca585f15e 100644 --- a/src/libcollections/btree/map.rs +++ b/src/libcollections/btree/map.rs @@ -727,7 +727,7 @@ impl<K: Ord, V> FromIterator<(K, V)> for BTreeMap<K, V> { } } -impl<K: Ord, V> Extendable<(K, V)> for BTreeMap<K, V> { +impl<K: Ord, V> Extend<(K, V)> for BTreeMap<K, V> { #[inline] fn extend<T: Iterator<(K, V)>>(&mut self, mut iter: T) { for (k, v) in iter { diff --git a/src/libcollections/btree/set.rs b/src/libcollections/btree/set.rs index f6a3de11d13..365450e76c9 100644 --- a/src/libcollections/btree/set.rs +++ b/src/libcollections/btree/set.rs @@ -316,7 +316,7 @@ impl<T: Ord> FromIterator<T> for BTreeSet<T> { } } -impl<T: Ord> Extendable<T> for BTreeSet<T> { +impl<T: Ord> Extend<T> for BTreeSet<T> { #[inline] fn extend<Iter: Iterator<T>>(&mut self, mut iter: Iter) { for elem in iter { diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index 9d9955141df..08f18d4161b 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -720,7 +720,7 @@ impl<A> FromIterator<A> for DList<A> { } } -impl<A> Extendable<A> for DList<A> { +impl<A> Extend<A> for DList<A> { fn extend<T: Iterator<A>>(&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 68991628b22..b13e45099ee 100644 --- a/src/libcollections/enum_set.rs +++ b/src/libcollections/enum_set.rs @@ -235,6 +235,22 @@ impl<E:CLike> Iterator<E> for Items<E> { } } +impl<E:CLike> FromIterator<E> for EnumSet<E> { + fn from_iter<I:Iterator<E>>(iterator: I) -> EnumSet<E> { + let mut ret = EnumSet::new(); + ret.extend(iterator); + ret + } +} + +impl<E:CLike> Extend<E> for EnumSet<E> { + fn extend<I: Iterator<E>>(&mut self, mut iterator: I) { + for element in iterator { + self.insert(element); + } + } +} + #[cfg(test)] mod test { use std::prelude::*; diff --git a/src/libcollections/ring_buf.rs b/src/libcollections/ring_buf.rs index 549ebb14b3e..46fd86df987 100644 --- a/src/libcollections/ring_buf.rs +++ b/src/libcollections/ring_buf.rs @@ -735,7 +735,7 @@ impl<A> FromIterator<A> for RingBuf<A> { } } -impl<A> Extendable<A> for RingBuf<A> { +impl<A> Extend<A> for RingBuf<A> { fn extend<T: Iterator<A>>(&mut self, mut iterator: T) { for elt in iterator { self.push_back(elt); diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index cf98a916bb0..cb9faf31a5f 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -683,8 +683,8 @@ impl FromIterator<char> for String { } } -#[experimental = "waiting on Extendable stabilization"] -impl Extendable<char> for String { +#[experimental = "waiting on Extend stabilization"] +impl Extend<char> for String { fn extend<I:Iterator<char>>(&mut self, mut iterator: I) { for ch in iterator { self.push(ch) diff --git a/src/libcollections/tree/map.rs b/src/libcollections/tree/map.rs index ea1c37d036a..50bfeafc43e 100644 --- a/src/libcollections/tree/map.rs +++ b/src/libcollections/tree/map.rs @@ -1260,7 +1260,7 @@ impl<K: Ord, V> FromIterator<(K, V)> for TreeMap<K, V> { } } -impl<K: Ord, V> Extendable<(K, V)> for TreeMap<K, V> { +impl<K: Ord, V> Extend<(K, V)> for TreeMap<K, V> { #[inline] fn extend<T: Iterator<(K, V)>>(&mut self, mut iter: T) { for (k, v) in iter { diff --git a/src/libcollections/tree/set.rs b/src/libcollections/tree/set.rs index 22307a5d376..45904259c66 100644 --- a/src/libcollections/tree/set.rs +++ b/src/libcollections/tree/set.rs @@ -659,7 +659,7 @@ impl<T: Ord> FromIterator<T> for TreeSet<T> { } } -impl<T: Ord> Extendable<T> for TreeSet<T> { +impl<T: Ord> Extend<T> for TreeSet<T> { #[inline] fn extend<Iter: Iterator<T>>(&mut self, mut iter: Iter) { for elem in iter { diff --git a/src/libcollections/trie/map.rs b/src/libcollections/trie/map.rs index d604e176a67..b94025bd394 100644 --- a/src/libcollections/trie/map.rs +++ b/src/libcollections/trie/map.rs @@ -628,7 +628,7 @@ impl<T> FromIterator<(uint, T)> for TrieMap<T> { } } -impl<T> Extendable<(uint, T)> for TrieMap<T> { +impl<T> Extend<(uint, T)> for TrieMap<T> { fn extend<Iter: Iterator<(uint, T)>>(&mut self, mut iter: Iter) { for (k, v) in iter { self.insert(k, v); diff --git a/src/libcollections/trie/set.rs b/src/libcollections/trie/set.rs index dd5a81fe96e..f40c0db5edf 100644 --- a/src/libcollections/trie/set.rs +++ b/src/libcollections/trie/set.rs @@ -355,7 +355,7 @@ impl FromIterator<uint> for TrieSet { } } -impl Extendable<uint> for TrieSet { +impl Extend<uint> for TrieSet { fn extend<Iter: Iterator<uint>>(&mut self, mut iter: Iter) { for elem in iter { self.insert(elem); diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 76399d42b8b..0e3799ed9ac 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -484,8 +484,8 @@ impl<T> FromIterator<T> for Vec<T> { } } -#[experimental = "waiting on Extendable stability"] -impl<T> Extendable<T> for Vec<T> { +#[experimental = "waiting on Extend stability"] +impl<T> Extend<T> for Vec<T> { #[inline] fn extend<I: Iterator<T>>(&mut self, mut iterator: I) { let (lower, _) = iterator.size_hint(); diff --git a/src/libcollections/vec_map.rs b/src/libcollections/vec_map.rs index 38a345272b0..36e66ed27f3 100644 --- a/src/libcollections/vec_map.rs +++ b/src/libcollections/vec_map.rs @@ -499,7 +499,7 @@ impl<V> FromIterator<(uint, V)> for VecMap<V> { } } -impl<V> Extendable<(uint, V)> for VecMap<V> { +impl<V> Extend<(uint, V)> for VecMap<V> { fn extend<Iter: Iterator<(uint, V)>>(&mut self, mut iter: Iter) { for (k, v) in iter { self.insert(k, v); diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index 39b319e6ac8..a717d3c2c99 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -66,6 +66,7 @@ use num::{Zero, One, CheckedAdd, CheckedSub, Saturating, ToPrimitive, Int}; use ops::{Add, Mul, Sub}; use option::{Option, Some, None}; use uint; +#[deprecated = "renamed to Extend"] pub use self::Extend as Extendable; /// Conversion from an `Iterator` pub trait FromIterator<A> { @@ -74,8 +75,8 @@ pub trait FromIterator<A> { } /// A type growable from an `Iterator` implementation -pub trait Extendable<A>: FromIterator<A> { - /// Extend a container with the elements yielded by an iterator +pub trait Extend<A> { + /// Extend a container with the elements yielded by an arbitrary iterator fn extend<T: Iterator<A>>(&mut self, iterator: T); } diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs index 996f2e56ad3..17f7a04819f 100644 --- a/src/libcore/prelude.rs +++ b/src/libcore/prelude.rs @@ -48,7 +48,7 @@ pub use char::Char; pub use clone::Clone; pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; pub use cmp::{Ordering, Less, Equal, Greater, Equiv}; -pub use iter::{FromIterator, Extendable}; +pub use iter::{FromIterator, Extend}; pub use iter::{Iterator, DoubleEndedIterator, RandomAccessIterator, CloneableIterator}; pub use iter::{OrdIterator, MutableDoubleEndedIterator, ExactSize}; pub use num::{Num, NumCast, CheckedAdd, CheckedSub, CheckedMul}; diff --git a/src/librustdoc/fold.rs b/src/librustdoc/fold.rs index b771473473c..173b50dfc5f 100644 --- a/src/librustdoc/fold.rs +++ b/src/librustdoc/fold.rs @@ -9,7 +9,7 @@ // except according to those terms. use clean::*; -use std::iter::Extendable; +use std::iter::Extend; use std::mem::{replace, swap}; pub trait DocFolder { diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index e164128eeb1..f55ce9ba462 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -15,7 +15,7 @@ use cmp::{max, Eq, Equiv, PartialEq}; use default::Default; use fmt::{mod, Show}; use hash::{Hash, Hasher, RandomSipHasher}; -use iter::{mod, Iterator, FromIterator, Extendable}; +use iter::{mod, Iterator, FromIterator, Extend}; use kinds::Sized; use mem::{mod, replace}; use num; @@ -1449,7 +1449,7 @@ impl<K: Eq + Hash<S>, V, S, H: Hasher<S> + Default> FromIterator<(K, V)> for Has } } -impl<K: Eq + Hash<S>, V, S, H: Hasher<S> + Default> Extendable<(K, V)> for HashMap<K, V, H> { +impl<K: Eq + Hash<S>, V, S, H: Hasher<S> + Default> Extend<(K, V)> for HashMap<K, V, H> { fn extend<T: Iterator<(K, V)>>(&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 58386882ac5..4326fae16fc 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -16,7 +16,7 @@ use default::Default; use fmt::Show; use fmt; use hash::{Hash, Hasher, RandomSipHasher}; -use iter::{Iterator, FromIterator, FilterMap, Chain, Repeat, Zip, Extendable}; +use iter::{Iterator, FromIterator, FilterMap, Chain, Repeat, Zip, Extend}; use iter; use option::{Some, None}; use result::{Ok, Err}; @@ -574,7 +574,7 @@ impl<T: Eq + Hash<S>, S, H: Hasher<S> + Default> FromIterator<T> for HashSet<T, } } -impl<T: Eq + Hash<S>, S, H: Hasher<S> + Default> Extendable<T> for HashSet<T, H> { +impl<T: Eq + Hash<S>, S, H: Hasher<S> + Default> Extend<T> for HashSet<T, H> { fn extend<I: Iterator<T>>(&mut self, mut iter: I) { for k in iter { self.insert(k); diff --git a/src/libstd/collections/lru_cache.rs b/src/libstd/collections/lru_cache.rs index aab0924e7e4..94bea37d187 100644 --- a/src/libstd/collections/lru_cache.rs +++ b/src/libstd/collections/lru_cache.rs @@ -41,7 +41,7 @@ use cmp::{PartialEq, Eq}; use collections::HashMap; use fmt; use hash::Hash; -use iter::{range, Iterator}; +use iter::{range, Iterator, Extend}; use mem; use ops::Drop; use option::{Some, None, Option}; @@ -329,6 +329,15 @@ impl<K: Hash + Eq, V> LruCache<K, V> { /// Clear the cache of all key-value pairs. #[unstable = "matches collection reform specification, waiting for dust to settle"] pub fn clear(&mut self) { self.map.clear(); } + +} + +impl<K: Hash + Eq, V> Extend<(K, V)> for LruCache<K, V> { + fn extend<T: Iterator<(K, V)>>(&mut self, mut iter: T) { + for (k, v) in iter{ + self.insert(k, v); + } + } } impl<A: fmt::Show + Hash + Eq, B: fmt::Show> fmt::Show for LruCache<A, B> { diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index c95d2c3f328..e76046bac05 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -60,7 +60,7 @@ use io::{IoResult, IoError, FileStat, SeekStyle, Seek, Writer, Reader}; use io::{Read, Truncate, SeekCur, SeekSet, ReadWrite, SeekEnd, Append}; use io::UpdateIoError; use io; -use iter::{Iterator, Extendable}; +use iter::{Iterator, Extend}; use kinds::Send; use libc; use option::{Some, None, Option}; diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index a927e091840..9918e939097 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -16,7 +16,7 @@ use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering}; use from_str::FromStr; use hash; use io::Writer; -use iter::{DoubleEndedIterator, AdditiveIterator, Extendable, Iterator, Map}; +use iter::{DoubleEndedIterator, AdditiveIterator, Extend, Iterator, Map}; use option::{Option, None, Some}; use str::Str; use str; diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index c5f84244928..3a5350f0a29 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -19,7 +19,7 @@ use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering}; use from_str::FromStr; use hash; use io::Writer; -use iter::{AdditiveIterator, DoubleEndedIterator, Extendable, Iterator, Map}; +use iter::{AdditiveIterator, DoubleEndedIterator, Extend, Iterator, Map}; use mem; use option::{Option, Some, None}; use slice::{AsSlice, SlicePrelude}; diff --git a/src/libstd/prelude.rs b/src/libstd/prelude.rs index 449d3a14bc9..f1090e75127 100644 --- a/src/libstd/prelude.rs +++ b/src/libstd/prelude.rs @@ -63,7 +63,7 @@ #[doc(no_inline)] pub use clone::Clone; #[doc(no_inline)] pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; #[doc(no_inline)] pub use cmp::{Ordering, Less, Equal, Greater, Equiv}; -#[doc(no_inline)] pub use iter::{FromIterator, Extendable, ExactSize}; +#[doc(no_inline)] pub use iter::{FromIterator, Extend, ExactSize}; #[doc(no_inline)] pub use iter::{Iterator, DoubleEndedIterator}; #[doc(no_inline)] pub use iter::{RandomAccessIterator, CloneableIterator}; #[doc(no_inline)] pub use iter::{OrdIterator, MutableDoubleEndedIterator}; diff --git a/src/libsyntax/util/small_vector.rs b/src/libsyntax/util/small_vector.rs index 56ee6c7b915..8aba0014e97 100644 --- a/src/libsyntax/util/small_vector.rs +++ b/src/libsyntax/util/small_vector.rs @@ -33,7 +33,7 @@ impl<T> FromIterator<T> for SmallVector<T> { } } -impl<T> Extendable<T> for SmallVector<T> { +impl<T> Extend<T> for SmallVector<T> { fn extend<I: Iterator<T>>(&mut self, mut iter: I) { for val in iter { self.push(val); |
