Skip to content

Commit 66613e2

Browse files
committed
make FromIterator use IntoIterator
This breaks all implementors of FromIterator, as they must now accept IntoIterator instead of Iterator. The fix for this is generally trivial (change the bound, and maybe call into_iter() on the argument to get the old argument). Users of FromIterator should be unaffected because Iterators are IntoIterator. [breaking-change]
1 parent 4a9d190 commit 66613e2

File tree

20 files changed

+48
-43
lines changed

20 files changed

+48
-43
lines changed

src/libcollections/binary_heap.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -650,8 +650,8 @@ impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {}
650650

651651
#[stable(feature = "rust1", since = "1.0.0")]
652652
impl<T: Ord> FromIterator<T> for BinaryHeap<T> {
653-
fn from_iter<Iter: Iterator<Item=T>>(iter: Iter) -> BinaryHeap<T> {
654-
BinaryHeap::from_vec(iter.collect())
653+
fn from_iter<I: IntoIterator<Item=T>>(iter: I) -> BinaryHeap<T> {
654+
BinaryHeap::from_vec(iter.into_iter().collect())
655655
}
656656
}
657657

src/libcollections/bit.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -924,9 +924,9 @@ impl Default for BitVec {
924924

925925
#[stable(feature = "rust1", since = "1.0.0")]
926926
impl FromIterator<bool> for BitVec {
927-
fn from_iter<I:Iterator<Item=bool>>(iterator: I) -> BitVec {
928-
let mut ret = BitVec::new();
929-
ret.extend(iterator);
927+
fn from_iter<I: IntoIterator<Item=bool>>(iter: I) -> BitVec {
928+
let mut ret = Bitv::new();
929+
ret.extend(iter);
930930
ret
931931
}
932932
}
@@ -1134,9 +1134,9 @@ impl Default for BitSet {
11341134

11351135
#[stable(feature = "rust1", since = "1.0.0")]
11361136
impl FromIterator<usize> for BitSet {
1137-
fn from_iter<I:Iterator<Item=usize>>(iterator: I) -> BitSet {
1138-
let mut ret = BitSet::new();
1139-
ret.extend(iterator);
1137+
fn from_iter<I: IntoIterator<Item=usize>>(iter: I) -> BitSet {
1138+
let mut ret = BitvSet::new();
1139+
ret.extend(iter);
11401140
ret
11411141
}
11421142
}

src/libcollections/btree/map.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ mod stack {
826826

827827
#[stable(feature = "rust1", since = "1.0.0")]
828828
impl<K: Ord, V> FromIterator<(K, V)> for BTreeMap<K, V> {
829-
fn from_iter<T: Iterator<Item=(K, V)>>(iter: T) -> BTreeMap<K, V> {
829+
fn from_iter<T: IntoIterator<Item=(K, V)>>(iter: T) -> BTreeMap<K, V> {
830830
let mut map = BTreeMap::new();
831831
map.extend(iter);
832832
map

src/libcollections/btree/set.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ impl<T: Ord> BTreeSet<T> {
473473

474474
#[stable(feature = "rust1", since = "1.0.0")]
475475
impl<T: Ord> FromIterator<T> for BTreeSet<T> {
476-
fn from_iter<Iter: Iterator<Item=T>>(iter: Iter) -> BTreeSet<T> {
476+
fn from_iter<I: IntoIterator<Item=T>>(iter: I) -> BTreeSet<T> {
477477
let mut set = BTreeSet::new();
478478
set.extend(iter);
479479
set

src/libcollections/enum_set.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@ impl<E:CLike> Iterator for Iter<E> {
250250
}
251251

252252
impl<E:CLike> FromIterator<E> for EnumSet<E> {
253-
fn from_iter<I:Iterator<Item=E>>(iterator: I) -> EnumSet<E> {
253+
fn from_iter<I: IntoIterator<Item=E>>(iter: I) -> EnumSet<E> {
254254
let mut ret = EnumSet::new();
255-
ret.extend(iterator);
255+
ret.extend(iter);
256256
ret
257257
}
258258
}

src/libcollections/linked_list.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -834,9 +834,9 @@ impl<A> DoubleEndedIterator for IntoIter<A> {
834834

835835
#[stable(feature = "rust1", since = "1.0.0")]
836836
impl<A> FromIterator<A> for LinkedList<A> {
837-
fn from_iter<T: Iterator<Item=A>>(iterator: T) -> LinkedList<A> {
838-
let mut ret = LinkedList::new();
839-
ret.extend(iterator);
837+
fn from_iter<T: IntoIterator<Item=A>>(iter: T) -> LinkedList<A> {
838+
let mut ret = DList::new();
839+
ret.extend(iter);
840840
ret
841841
}
842842
}

src/libcollections/string.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -709,18 +709,18 @@ impl Error for FromUtf16Error {
709709

710710
#[stable(feature = "rust1", since = "1.0.0")]
711711
impl FromIterator<char> for String {
712-
fn from_iter<I:Iterator<Item=char>>(iterator: I) -> String {
712+
fn from_iter<I: IntoIterator<Item=char>>(iter: I) -> String {
713713
let mut buf = String::new();
714-
buf.extend(iterator);
714+
buf.extend(iter);
715715
buf
716716
}
717717
}
718718

719719
#[stable(feature = "rust1", since = "1.0.0")]
720720
impl<'a> FromIterator<&'a str> for String {
721-
fn from_iter<I:Iterator<Item=&'a str>>(iterator: I) -> String {
721+
fn from_iter<I: IntoIterator<Item=&'a str>>(iter: I) -> String {
722722
let mut buf = String::new();
723-
buf.extend(iterator);
723+
buf.extend(iter);
724724
buf
725725
}
726726
}

src/libcollections/vec.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,7 +1407,8 @@ impl<T> ops::DerefMut for Vec<T> {
14071407
#[stable(feature = "rust1", since = "1.0.0")]
14081408
impl<T> FromIterator<T> for Vec<T> {
14091409
#[inline]
1410-
fn from_iter<I:Iterator<Item=T>>(mut iterator: I) -> Vec<T> {
1410+
fn from_iter<I: IntoIterator<Item=T>>(iterable: I) -> Vec<T> {
1411+
let mut iterator = iterable.into_iter();
14111412
let (lower, _) = iterator.size_hint();
14121413
let mut vector = Vec::with_capacity(lower);
14131414

@@ -1651,7 +1652,7 @@ pub type CowVec<'a, T> = Cow<'a, Vec<T>, [T]>;
16511652

16521653
#[unstable(feature = "collections")]
16531654
impl<'a, T> FromIterator<T> for CowVec<'a, T> where T: Clone {
1654-
fn from_iter<I: Iterator<Item=T>>(it: I) -> CowVec<'a, T> {
1655+
fn from_iter<I: IntoIterator<Item=T>>(it: I) -> CowVec<'a, T> {
16551656
Cow::Owned(FromIterator::from_iter(it))
16561657
}
16571658
}

src/libcollections/vec_deque.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1701,7 +1701,8 @@ impl<A> IndexMut<usize> for VecDeque<A> {
17011701

17021702
#[stable(feature = "rust1", since = "1.0.0")]
17031703
impl<A> FromIterator<A> for VecDeque<A> {
1704-
fn from_iter<T: Iterator<Item=A>>(iterator: T) -> VecDeque<A> {
1704+
fn from_iter<T: IntoIterator<Item=A>>(iterable: T) -> VecDeque<A> {
1705+
let iterator = iterable.into_iter();
17051706
let (lower, _) = iterator.size_hint();
17061707
let mut deq = VecDeque::with_capacity(lower);
17071708
deq.extend(iterator);

src/libcollections/vec_map.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ impl<V: fmt::Debug> fmt::Debug for VecMap<V> {
661661

662662
#[stable(feature = "rust1", since = "1.0.0")]
663663
impl<V> FromIterator<(usize, V)> for VecMap<V> {
664-
fn from_iter<Iter: Iterator<Item=(usize, V)>>(iter: Iter) -> VecMap<V> {
664+
fn from_iter<I: IntoIterator<Item=(usize, V)>>(iter: I) -> VecMap<V> {
665665
let mut map = VecMap::new();
666666
map.extend(iter);
667667
map

0 commit comments

Comments
 (0)