From 16c8cd931cd5ccc9c73b87cac488938556018019 Mon Sep 17 00:00:00 2001 From: gamazeps Date: Sat, 8 Nov 2014 01:39:39 +0100 Subject: [PATCH 1/2] Renamed Extendable to Extend In order to upgrade, simply rename the Extendable trait to Extend in your code Part of #18424 [breaking-change] --- src/etc/vim/syntax/rust.vim | 2 +- src/libcollections/binary_heap.rs | 2 +- src/libcollections/bit.rs | 4 ++-- src/libcollections/btree/map.rs | 2 +- src/libcollections/btree/set.rs | 2 +- src/libcollections/dlist.rs | 2 +- src/libcollections/ring_buf.rs | 2 +- src/libcollections/string.rs | 4 ++-- src/libcollections/tree/map.rs | 2 +- src/libcollections/tree/set.rs | 2 +- src/libcollections/trie/map.rs | 2 +- src/libcollections/trie/set.rs | 2 +- src/libcollections/vec.rs | 4 ++-- src/libcollections/vec_map.rs | 2 +- src/libcore/iter.rs | 5 +++-- src/libcore/prelude.rs | 2 +- src/librustdoc/fold.rs | 2 +- src/libstd/collections/hash/map.rs | 4 ++-- src/libstd/collections/hash/set.rs | 4 ++-- src/libstd/io/fs.rs | 2 +- src/libstd/path/posix.rs | 2 +- src/libstd/path/windows.rs | 2 +- src/libstd/prelude.rs | 2 +- src/libsyntax/util/small_vector.rs | 2 +- 24 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index cec97a3ec88be..25d3b4bf272a0 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 c9d6007744944..88e1e4ffc2277 100644 --- a/src/libcollections/binary_heap.rs +++ b/src/libcollections/binary_heap.rs @@ -555,7 +555,7 @@ impl FromIterator for BinaryHeap { } } -impl Extendable for BinaryHeap { +impl Extend for BinaryHeap { fn extend>(&mut self, mut iter: Iter) { let (lower, _) = iter.size_hint(); diff --git a/src/libcollections/bit.rs b/src/libcollections/bit.rs index 833cfc04c552b..6ed9dad6252da 100644 --- a/src/libcollections/bit.rs +++ b/src/libcollections/bit.rs @@ -835,7 +835,7 @@ impl FromIterator for Bitv { } } -impl Extendable for Bitv { +impl Extend for Bitv { #[inline] fn extend>(&mut self, mut iterator: I) { let (min, _) = iterator.size_hint(); @@ -1014,7 +1014,7 @@ impl FromIterator for BitvSet { } } -impl Extendable for BitvSet { +impl Extend for BitvSet { #[inline] fn extend>(&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 9b644115f3010..57ca585f15e7b 100644 --- a/src/libcollections/btree/map.rs +++ b/src/libcollections/btree/map.rs @@ -727,7 +727,7 @@ impl FromIterator<(K, V)> for BTreeMap { } } -impl Extendable<(K, V)> for BTreeMap { +impl Extend<(K, V)> for BTreeMap { #[inline] fn extend>(&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 f6a3de11d13df..365450e76c901 100644 --- a/src/libcollections/btree/set.rs +++ b/src/libcollections/btree/set.rs @@ -316,7 +316,7 @@ impl FromIterator for BTreeSet { } } -impl Extendable for BTreeSet { +impl Extend for BTreeSet { #[inline] fn extend>(&mut self, mut iter: Iter) { for elem in iter { diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index 9d9955141df15..08f18d4161bcd 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -720,7 +720,7 @@ impl FromIterator for DList { } } -impl Extendable for DList { +impl Extend for DList { fn extend>(&mut self, mut iterator: T) { for elt in iterator { self.push_back(elt); } } diff --git a/src/libcollections/ring_buf.rs b/src/libcollections/ring_buf.rs index 549ebb14b3e16..46fd86df98701 100644 --- a/src/libcollections/ring_buf.rs +++ b/src/libcollections/ring_buf.rs @@ -735,7 +735,7 @@ impl FromIterator for RingBuf { } } -impl Extendable for RingBuf { +impl Extend for RingBuf { fn extend>(&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 cf98a916bb01a..cb9faf31a5fd8 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -683,8 +683,8 @@ impl FromIterator for String { } } -#[experimental = "waiting on Extendable stabilization"] -impl Extendable for String { +#[experimental = "waiting on Extend stabilization"] +impl Extend for String { fn extend>(&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 ea1c37d036ae0..50bfeafc43e29 100644 --- a/src/libcollections/tree/map.rs +++ b/src/libcollections/tree/map.rs @@ -1260,7 +1260,7 @@ impl FromIterator<(K, V)> for TreeMap { } } -impl Extendable<(K, V)> for TreeMap { +impl Extend<(K, V)> for TreeMap { #[inline] fn extend>(&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 22307a5d376b9..45904259c6614 100644 --- a/src/libcollections/tree/set.rs +++ b/src/libcollections/tree/set.rs @@ -659,7 +659,7 @@ impl FromIterator for TreeSet { } } -impl Extendable for TreeSet { +impl Extend for TreeSet { #[inline] fn extend>(&mut self, mut iter: Iter) { for elem in iter { diff --git a/src/libcollections/trie/map.rs b/src/libcollections/trie/map.rs index d604e176a672d..b94025bd394fd 100644 --- a/src/libcollections/trie/map.rs +++ b/src/libcollections/trie/map.rs @@ -628,7 +628,7 @@ impl FromIterator<(uint, T)> for TrieMap { } } -impl Extendable<(uint, T)> for TrieMap { +impl Extend<(uint, T)> for TrieMap { fn extend>(&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 dd5a81fe96ee9..f40c0db5edf99 100644 --- a/src/libcollections/trie/set.rs +++ b/src/libcollections/trie/set.rs @@ -355,7 +355,7 @@ impl FromIterator for TrieSet { } } -impl Extendable for TrieSet { +impl Extend for TrieSet { fn extend>(&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 78ed5e9706947..eec185359753c 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -484,8 +484,8 @@ impl FromIterator for Vec { } } -#[experimental = "waiting on Extendable stability"] -impl Extendable for Vec { +#[experimental = "waiting on Extend stability"] +impl Extend for Vec { #[inline] fn extend>(&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 38a345272b042..36e66ed27f3c9 100644 --- a/src/libcollections/vec_map.rs +++ b/src/libcollections/vec_map.rs @@ -499,7 +499,7 @@ impl FromIterator<(uint, V)> for VecMap { } } -impl Extendable<(uint, V)> for VecMap { +impl Extend<(uint, V)> for VecMap { fn extend>(&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 39b319e6ac867..a717d3c2c993d 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 { @@ -74,8 +75,8 @@ pub trait FromIterator { } /// A type growable from an `Iterator` implementation -pub trait Extendable: FromIterator { - /// Extend a container with the elements yielded by an iterator +pub trait Extend { + /// Extend a container with the elements yielded by an arbitrary iterator fn extend>(&mut self, iterator: T); } diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs index 996f2e56ad35e..17f7a04819f4b 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 b771473473c11..173b50dfc5ff0 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 e164128eeb10a..f55ce9ba4625c 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, V, S, H: Hasher + Default> FromIterator<(K, V)> for Has } } -impl, V, S, H: Hasher + Default> Extendable<(K, V)> for HashMap { +impl, V, S, H: Hasher + Default> Extend<(K, V)> for HashMap { 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 58386882ac524..4326fae16fc91 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, S, H: Hasher + Default> FromIterator for HashSet, S, H: Hasher + Default> Extendable for HashSet { +impl, S, H: Hasher + Default> Extend for HashSet { fn extend>(&mut self, mut iter: I) { for k in iter { self.insert(k); diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index c95d2c3f328b7..e76046bac059f 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 a927e09184036..9918e93909746 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 c5f84244928b7..3a5350f0a291c 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 449d3a14bc977..f1090e7512797 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 56ee6c7b9158c..8aba0014e97bb 100644 --- a/src/libsyntax/util/small_vector.rs +++ b/src/libsyntax/util/small_vector.rs @@ -33,7 +33,7 @@ impl FromIterator for SmallVector { } } -impl Extendable for SmallVector { +impl Extend for SmallVector { fn extend>(&mut self, mut iter: I) { for val in iter { self.push(val); From a11f16739f08ec480263ba549d510fffc8ce557e Mon Sep 17 00:00:00 2001 From: gamazeps Date: Sat, 8 Nov 2014 01:40:20 +0100 Subject: [PATCH 2/2] Implements Extend for EnumSet and LruCache Part of #18424 --- src/libcollections/enum_set.rs | 16 ++++++++++++++++ src/libstd/collections/lru_cache.rs | 11 ++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs index 1acdaef9c91c1..7d2d298ee873f 100644 --- a/src/libcollections/enum_set.rs +++ b/src/libcollections/enum_set.rs @@ -230,6 +230,22 @@ impl Iterator for Items { } } +impl FromIterator for EnumSet { + fn from_iter>(iterator: I) -> EnumSet { + let mut ret = EnumSet::new(); + ret.extend(iterator); + ret + } +} + +impl Extend for EnumSet { + fn extend>(&mut self, mut iterator: I) { + for element in iterator { + self.insert(element); + } + } +} + #[cfg(test)] mod test { use std::prelude::*; diff --git a/src/libstd/collections/lru_cache.rs b/src/libstd/collections/lru_cache.rs index aab0924e7e439..94bea37d18728 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 LruCache { /// 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 Extend<(K, V)> for LruCache { + fn extend>(&mut self, mut iter: T) { + for (k, v) in iter{ + self.insert(k, v); + } + } } impl fmt::Show for LruCache {