diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index a3b65609b0a37..914244cc4319e 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -582,7 +582,7 @@ impl DoubleEndedIterator for MoveItems { } impl FromIterator for DList { - fn from_iterator>(iterator: &mut T) -> DList { + fn from_iterator>(iterator: T) -> DList { let mut ret = DList::new(); ret.extend(iterator); ret @@ -590,8 +590,8 @@ impl FromIterator for DList { } impl Extendable for DList { - fn extend>(&mut self, iterator: &mut T) { - for elt in *iterator { self.push_back(elt); } + fn extend>(&mut self, mut iterator: T) { + for elt in iterator { self.push_back(elt); } } } diff --git a/src/libcollections/hashmap.rs b/src/libcollections/hashmap.rs index 5ec5db45f275f..b03cfced7cdbe 100644 --- a/src/libcollections/hashmap.rs +++ b/src/libcollections/hashmap.rs @@ -1356,7 +1356,7 @@ pub type Values<'a, K, V> = iter::Map<'static, (&'a K, &'a V), &'a V, Entries<'a, K, V>>; impl, V, S, H: Hasher + Default> FromIterator<(K, V)> for HashMap { - fn from_iterator>(iter: &mut T) -> HashMap { + fn from_iterator>(iter: T) -> HashMap { let (lower, _) = iter.size_hint(); let mut map = HashMap::with_capacity_and_hasher(lower, Default::default()); map.extend(iter); @@ -1365,8 +1365,8 @@ impl, V, S, H: Hasher + Default> FromIterator<(K, V)> fo } impl, V, S, H: Hasher + Default> Extendable<(K, V)> for HashMap { - fn extend>(&mut self, iter: &mut T) { - for (k, v) in *iter { + fn extend>(&mut self, mut iter: T) { + for (k, v) in iter { self.insert(k, v); } } @@ -1540,7 +1540,7 @@ impl + fmt::Show, S, H: Hasher> fmt::Show for HashSet, S, H: Hasher + Default> FromIterator for HashSet { - fn from_iterator>(iter: &mut I) -> HashSet { + fn from_iterator>(iter: I) -> HashSet { let (lower, _) = iter.size_hint(); let mut set = HashSet::with_capacity_and_hasher(lower, Default::default()); set.extend(iter); @@ -1549,8 +1549,8 @@ impl, S, H: Hasher + Default> FromIterator for HashSe } impl, S, H: Hasher + Default> Extendable for HashSet { - fn extend>(&mut self, iter: &mut I) { - for k in *iter { + fn extend>(&mut self, mut iter: I) { + for k in iter { self.insert(k); } } diff --git a/src/libcollections/priority_queue.rs b/src/libcollections/priority_queue.rs index dc9e5a9700d15..65ccfe3ff7080 100644 --- a/src/libcollections/priority_queue.rs +++ b/src/libcollections/priority_queue.rs @@ -193,22 +193,21 @@ impl<'a, T> Iterator<&'a T> for Items<'a, T> { } impl FromIterator for PriorityQueue { - fn from_iterator>(iter: &mut Iter) -> PriorityQueue { + fn from_iterator>(iter: Iter) -> PriorityQueue { let mut q = PriorityQueue::new(); q.extend(iter); - q } } impl Extendable for PriorityQueue { - fn extend>(&mut self, iter: &mut Iter) { + fn extend>(&mut self, mut iter: Iter) { let (lower, _) = iter.size_hint(); let len = self.capacity(); self.reserve(len + lower); - for elem in *iter { + for elem in iter { self.push(elem); } } diff --git a/src/libcollections/ringbuf.rs b/src/libcollections/ringbuf.rs index e083f3f600fcc..05a4a2ba5fb31 100644 --- a/src/libcollections/ringbuf.rs +++ b/src/libcollections/ringbuf.rs @@ -386,7 +386,7 @@ impl Eq for RingBuf { } impl FromIterator for RingBuf { - fn from_iterator>(iterator: &mut T) -> RingBuf { + fn from_iterator>(iterator: T) -> RingBuf { let (lower, _) = iterator.size_hint(); let mut deq = RingBuf::with_capacity(lower); deq.extend(iterator); @@ -395,8 +395,8 @@ impl FromIterator for RingBuf { } impl Extendable for RingBuf { - fn extend>(&mut self, iterator: &mut T) { - for elt in *iterator { + fn extend>(&mut self, mut iterator: T) { + for elt in iterator { self.push_back(elt); } } diff --git a/src/libcollections/treemap.rs b/src/libcollections/treemap.rs index 5965417bac71b..80886f9608686 100644 --- a/src/libcollections/treemap.rs +++ b/src/libcollections/treemap.rs @@ -971,7 +971,7 @@ fn remove(node: &mut Option<~TreeNode>, } impl FromIterator<(K, V)> for TreeMap { - fn from_iterator>(iter: &mut T) -> TreeMap { + fn from_iterator>(iter: T) -> TreeMap { let mut map = TreeMap::new(); map.extend(iter); map @@ -980,15 +980,15 @@ impl FromIterator<(K, V)> for TreeMap { impl Extendable<(K, V)> for TreeMap { #[inline] - fn extend>(&mut self, iter: &mut T) { - for (k, v) in *iter { + fn extend>(&mut self, mut iter: T) { + for (k, v) in iter { self.insert(k, v); } } } impl FromIterator for TreeSet { - fn from_iterator>(iter: &mut Iter) -> TreeSet { + fn from_iterator>(iter: Iter) -> TreeSet { let mut set = TreeSet::new(); set.extend(iter); set @@ -997,8 +997,8 @@ impl FromIterator for TreeSet { impl Extendable for TreeSet { #[inline] - fn extend>(&mut self, iter: &mut Iter) { - for elem in *iter { + fn extend>(&mut self, mut iter: Iter) { + for elem in iter { self.insert(elem); } } diff --git a/src/libcollections/trie.rs b/src/libcollections/trie.rs index 66bcd3cbdda43..f1cc9367509ad 100644 --- a/src/libcollections/trie.rs +++ b/src/libcollections/trie.rs @@ -261,7 +261,7 @@ impl TrieMap { } impl FromIterator<(uint, T)> for TrieMap { - fn from_iterator>(iter: &mut Iter) -> TrieMap { + fn from_iterator>(iter: Iter) -> TrieMap { let mut map = TrieMap::new(); map.extend(iter); map @@ -269,8 +269,8 @@ impl FromIterator<(uint, T)> for TrieMap { } impl Extendable<(uint, T)> for TrieMap { - fn extend>(&mut self, iter: &mut Iter) { - for (k, v) in *iter { + fn extend>(&mut self, mut iter: Iter) { + for (k, v) in iter { self.insert(k, v); } } @@ -346,7 +346,7 @@ impl TrieSet { } impl FromIterator for TrieSet { - fn from_iterator>(iter: &mut Iter) -> TrieSet { + fn from_iterator>(iter: Iter) -> TrieSet { let mut set = TrieSet::new(); set.extend(iter); set @@ -354,8 +354,8 @@ impl FromIterator for TrieSet { } impl Extendable for TrieSet { - fn extend>(&mut self, iter: &mut Iter) { - for elem in *iter { + fn extend>(&mut self, mut iter: Iter) { + for elem in iter { self.insert(elem); } } diff --git a/src/libglob/lib.rs b/src/libglob/lib.rs index 1411fe89e6bb5..9c017a27faa1f 100644 --- a/src/libglob/lib.rs +++ b/src/libglob/lib.rs @@ -153,7 +153,7 @@ impl Iterator for Paths { // so we don't need to check the children return Some(path); } else { - self.todo.extend(&mut list_dir_sorted(&path).move_iter().map(|x|(x,idx+1))); + self.todo.extend(list_dir_sorted(&path).move_iter().map(|x|(x,idx+1))); } } } diff --git a/src/libnum/bigint.rs b/src/libnum/bigint.rs index 50d72663ce8b1..86db7cbb62510 100644 --- a/src/libnum/bigint.rs +++ b/src/libnum/bigint.rs @@ -2185,7 +2185,7 @@ mod bigint_tests { nums.push(BigInt::from_slice(Minus, *s)); } nums.push(Zero::zero()); - nums.extend(&mut vs.iter().map(|s| BigInt::from_slice(Plus, *s))); + nums.extend(vs.iter().map(|s| BigInt::from_slice(Plus, *s))); for (i, ni) in nums.iter().enumerate() { for (j0, nj) in nums.slice(i, nums.len()).iter().enumerate() { diff --git a/src/librustc/back/archive.rs b/src/librustc/back/archive.rs index f12a2e5a76120..786be3798a1a0 100644 --- a/src/librustc/back/archive.rs +++ b/src/librustc/back/archive.rs @@ -41,8 +41,8 @@ fn run_ar(sess: &Session, args: &str, cwd: Option<&Path>, let ar = get_ar_prog(sess); let mut args = vec!(args.to_owned()); - let mut paths = paths.iter().map(|p| p.as_str().unwrap().to_owned()); - args.extend(&mut paths); + let paths = paths.iter().map(|p| p.as_str().unwrap().to_owned()); + args.extend(paths); debug!("{} {}", ar, args.connect(" ")); match cwd { Some(p) => { debug!("inside {}", p.display()); } @@ -190,7 +190,7 @@ impl<'a> Archive<'a> { // Finally, add all the renamed files to this archive let mut args = vec!(&self.dst); - args.extend(&mut inputs.iter()); + args.extend(inputs.iter()); run_ar(self.sess, "r", None, args.as_slice()); Ok(()) } diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index 772d92a4f85ba..1e0e38bb45b39 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -496,7 +496,7 @@ pub fn collect_crate_types(session: &Session, return vec!(CrateTypeExecutable) } let mut base = session.opts.crate_types.clone(); - let mut iter = attrs.iter().filter_map(|a| { + let iter = attrs.iter().filter_map(|a| { if a.name().equiv(&("crate_type")) { match a.value_str() { Some(ref n) if n.equiv(&("rlib")) => Some(CrateTypeRlib), @@ -525,7 +525,7 @@ pub fn collect_crate_types(session: &Session, None } }); - base.extend(&mut iter); + base.extend(iter); if base.len() == 0 { base.push(CrateTypeExecutable); } diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs index fb8f6d4df29d5..1d2e1d0232c34 100644 --- a/src/librustc/middle/trans/closure.rs +++ b/src/librustc/middle/trans/closure.rs @@ -476,7 +476,7 @@ pub fn get_wrapper_for_bare_fn(ccx: &CrateContext, } None => {} } - llargs.extend(&mut args.iter().map(|arg| arg.val)); + llargs.extend(args.iter().map(|arg| arg.val)); let retval = Call(bcx, fn_ptr, llargs.as_slice(), []); if type_is_zero_size(ccx, f.sig.output) || fcx.llretptr.get().is_some() { diff --git a/src/librustc/middle/trans/type_of.rs b/src/librustc/middle/trans/type_of.rs index d7c58f146e1dc..684a6624c5e1a 100644 --- a/src/librustc/middle/trans/type_of.rs +++ b/src/librustc/middle/trans/type_of.rs @@ -57,8 +57,8 @@ pub fn type_of_rust_fn(cx: &CrateContext, has_env: bool, } // ... then explicit args. - let mut input_tys = inputs.iter().map(|&arg_ty| type_of_explicit_arg(cx, arg_ty)); - atys.extend(&mut input_tys); + let input_tys = inputs.iter().map(|&arg_ty| type_of_explicit_arg(cx, arg_ty)); + atys.extend(input_tys); // Use the output as the actual return value if it's immediate. if use_out_pointer || return_type_is_void(cx, output) { diff --git a/src/librustdoc/fold.rs b/src/librustdoc/fold.rs index f6b9ec329fd35..0098bcfb4b77f 100644 --- a/src/librustdoc/fold.rs +++ b/src/librustdoc/fold.rs @@ -25,7 +25,7 @@ pub trait DocFolder { StructItem(mut i) => { let mut foo = Vec::new(); swap(&mut foo, &mut i.fields); let num_fields = foo.len(); - i.fields.extend(&mut foo.move_iter().filter_map(|x| self.fold_item(x))); + i.fields.extend(foo.move_iter().filter_map(|x| self.fold_item(x))); i.fields_stripped |= num_fields != i.fields.len(); StructItem(i) }, @@ -35,7 +35,7 @@ pub trait DocFolder { EnumItem(mut i) => { let mut foo = Vec::new(); swap(&mut foo, &mut i.variants); let num_variants = foo.len(); - i.variants.extend(&mut foo.move_iter().filter_map(|x| self.fold_item(x))); + i.variants.extend(foo.move_iter().filter_map(|x| self.fold_item(x))); i.variants_stripped |= num_variants != i.variants.len(); EnumItem(i) }, @@ -57,12 +57,12 @@ pub trait DocFolder { } } let mut foo = Vec::new(); swap(&mut foo, &mut i.methods); - i.methods.extend(&mut foo.move_iter().filter_map(|x| vtrm(self, x))); + i.methods.extend(foo.move_iter().filter_map(|x| vtrm(self, x))); TraitItem(i) }, ImplItem(mut i) => { let mut foo = Vec::new(); swap(&mut foo, &mut i.methods); - i.methods.extend(&mut foo.move_iter().filter_map(|x| self.fold_item(x))); + i.methods.extend(foo.move_iter().filter_map(|x| self.fold_item(x))); ImplItem(i) }, VariantItem(i) => { @@ -72,7 +72,7 @@ pub trait DocFolder { let mut foo = Vec::new(); swap(&mut foo, &mut j.fields); let num_fields = foo.len(); let c = |x| self.fold_item(x); - j.fields.extend(&mut foo.move_iter().filter_map(c)); + j.fields.extend(foo.move_iter().filter_map(c)); j.fields_stripped |= num_fields != j.fields.len(); VariantItem(Variant {kind: StructVariant(j), ..i2}) }, diff --git a/src/libstd/iter.rs b/src/libstd/iter.rs index 8762f23c3cefa..0a19bc43b281d 100644 --- a/src/libstd/iter.rs +++ b/src/libstd/iter.rs @@ -76,13 +76,13 @@ use mem; /// Conversion from an `Iterator` pub trait FromIterator { /// Build a container with elements from an external iterator. - fn from_iterator>(iterator: &mut T) -> Self; + fn from_iterator>(iterator: T) -> Self; } /// A type growable from an `Iterator` implementation pub trait Extendable: FromIterator { /// Extend a container with the elements yielded by an iterator - fn extend>(&mut self, iterator: &mut T); + fn extend>(&mut self, iterator: T); } /// An interface for dealing with "external iterators". These types of iterators @@ -460,7 +460,7 @@ pub trait Iterator { /// ``` #[inline] fn collect>(&mut self) -> B { - FromIterator::from_iterator(self) + FromIterator::from_iterator(self.by_ref()) } /// Loops through `n` iterations, returning the `n`th element of the @@ -2336,7 +2336,7 @@ mod tests { #[test] fn test_counter_from_iter() { let mut it = count(0, 5).take(10); - let xs: ~[int] = FromIterator::from_iterator(&mut it); + let xs: ~[int] = FromIterator::from_iterator(it); assert_eq!(xs, ~[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]); } diff --git a/src/libstd/option.rs b/src/libstd/option.rs index 23363a9784575..14dc42195e190 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -593,7 +593,7 @@ pub fn collect>, V: FromIterator>(iter: Iter) -> } }); - let v: V = FromIterator::from_iterator(&mut iter); + let v: V = FromIterator::from_iterator(iter.by_ref()); if iter.state { None diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index 3596a07eeb242..cb4c830f380e2 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -277,7 +277,7 @@ impl GenericPath for Path { (None, None) => break, (Some(a), None) => { comps.push(a); - comps.extend(&mut ita); + comps.extend(ita.by_ref()); break; } (None, _) => comps.push(dot_dot_static), @@ -290,7 +290,7 @@ impl GenericPath for Path { comps.push(dot_dot_static); } comps.push(a); - comps.extend(&mut ita); + comps.extend(ita.by_ref()); break; } } diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index 9d65a99a0b5e3..d488997b0c292 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -539,7 +539,7 @@ impl GenericPath for Path { (Some(a), None) => { comps.push(a); if !a_verb { - comps.extend(&mut ita); + comps.extend(ita.by_ref()); break; } } @@ -561,7 +561,7 @@ impl GenericPath for Path { } comps.push(a); if !a_verb { - comps.extend(&mut ita); + comps.extend(ita.by_ref()); break; } } diff --git a/src/libstd/result.rs b/src/libstd/result.rs index 5c3a587d98950..df1c4ae60ba0b 100644 --- a/src/libstd/result.rs +++ b/src/libstd/result.rs @@ -230,7 +230,7 @@ pub fn collect>, V: FromIterator>(iter: Ite } }); - let v: V = FromIterator::from_iterator(&mut iter); + let v: V = FromIterator::from_iterator(iter.by_ref()); match iter.state { Some(err) => Err(err), diff --git a/src/libstd/slice.rs b/src/libstd/slice.rs index 985feaf6ab653..8788a584f30ef 100644 --- a/src/libstd/slice.rs +++ b/src/libstd/slice.rs @@ -2919,10 +2919,10 @@ impl Drop for MoveItems { pub type RevMoveItems = Rev>; impl FromIterator for ~[A] { - fn from_iterator>(iterator: &mut T) -> ~[A] { + fn from_iterator>(mut iterator: T) -> ~[A] { let (lower, _) = iterator.size_hint(); let mut xs = with_capacity(lower); - for x in *iterator { + for x in iterator { xs.push(x); } xs @@ -2930,11 +2930,11 @@ impl FromIterator for ~[A] { } impl Extendable for ~[A] { - fn extend>(&mut self, iterator: &mut T) { + fn extend>(&mut self, mut iterator: T) { let (lower, _) = iterator.size_hint(); let len = self.len(); self.reserve_exact(len + lower); - for x in *iterator { + for x in iterator { self.push(x); } } diff --git a/src/libstd/str.rs b/src/libstd/str.rs index 4466439bcbd9d..fac4202217f49 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -3019,7 +3019,7 @@ impl Clone for ~str { impl FromIterator for ~str { #[inline] - fn from_iterator>(iterator: &mut T) -> ~str { + fn from_iterator>(iterator: T) -> ~str { let (lower, _) = iterator.size_hint(); let mut buf = with_capacity(lower); buf.extend(iterator); @@ -3029,11 +3029,11 @@ impl FromIterator for ~str { impl Extendable for ~str { #[inline] - fn extend>(&mut self, iterator: &mut T) { + fn extend>(&mut self, mut iterator: T) { let (lower, _) = iterator.size_hint(); let reserve = lower + self.len(); self.reserve(reserve); - for ch in *iterator { + for ch in iterator { self.push_char(ch) } } @@ -3219,7 +3219,7 @@ mod tests { let mut cpy = data.clone(); let other = "abc"; let mut it = other.chars(); - cpy.extend(&mut it); + cpy.extend(it); assert_eq!(cpy, data + other); } diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index 5809fca9682e6..4454801c12946 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -305,10 +305,10 @@ impl Clone for Vec { } impl FromIterator for Vec { - fn from_iterator>(iterator: &mut I) -> Vec { + fn from_iterator>(mut iterator: I) -> Vec { let (lower, _) = iterator.size_hint(); let mut vector = Vec::with_capacity(lower); - for element in *iterator { + for element in iterator { vector.push(element) } vector @@ -316,10 +316,10 @@ impl FromIterator for Vec { } impl Extendable for Vec { - fn extend>(&mut self, iterator: &mut I) { + fn extend>(&mut self, mut iterator: I) { let (lower, _) = iterator.size_hint(); self.reserve_additional(lower); - for element in *iterator { + for element in iterator { self.push(element) } } @@ -1429,12 +1429,12 @@ mod tests { let mut v = Vec::new(); let mut w = Vec::new(); - v.extend(&mut range(0, 3)); + v.extend(range(0, 3)); for i in range(0, 3) { w.push(i) } assert_eq!(v, w); - v.extend(&mut range(3, 10)); + v.extend(range(3, 10)); for i in range(3, 10) { w.push(i) } assert_eq!(v, w); diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 2f502c1b55f7a..2bcb9c4a229be 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -359,7 +359,7 @@ impl<'a> ExtCtxt<'a> { pub fn mod_path(&self) -> Vec { let mut v = Vec::new(); v.push(token::str_to_ident(self.ecfg.crate_id.name)); - v.extend(&mut self.mod_path.iter().map(|a| *a)); + v.extend(self.mod_path.iter().map(|a| *a)); return v; } pub fn bt_push(&mut self, ei: codemap::ExpnInfo) { diff --git a/src/libsyntax/ext/deriving/generic.rs b/src/libsyntax/ext/deriving/generic.rs index 89a8b2cd336d5..a959e388bcbec 100644 --- a/src/libsyntax/ext/deriving/generic.rs +++ b/src/libsyntax/ext/deriving/generic.rs @@ -365,10 +365,10 @@ impl<'a> TraitDef<'a> { let mut ty_params = ty_params.into_vec(); // Copy the lifetimes - lifetimes.extend(&mut generics.lifetimes.iter().map(|l| *l)); + lifetimes.extend(generics.lifetimes.iter().map(|l| *l)); // Create the type parameters. - ty_params.extend(&mut generics.ty_params.iter().map(|ty_param| { + ty_params.extend(generics.ty_params.iter().map(|ty_param| { // I don't think this can be moved out of the loop, since // a TyParamBound requires an ast id let mut bounds = diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 395bae822a174..e6494bf1aca8a 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -282,7 +282,7 @@ pub fn expand_item(it: @ast::Item, fld: &mut MacroExpander) let mut items: SmallVector<@ast::Item> = SmallVector::zero(); dec_fn(fld.cx, attr.span, attr.node.value, it, |item| items.push(item)); - decorator_items.extend(&mut items.move_iter() + decorator_items.extend(items.move_iter() .flat_map(|item| expand_item(item, fld).move_iter())); fld.cx.bt_pop(); diff --git a/src/libsyntax/owned_slice.rs b/src/libsyntax/owned_slice.rs index d5b90821897f4..57051e7866714 100644 --- a/src/libsyntax/owned_slice.rs +++ b/src/libsyntax/owned_slice.rs @@ -126,7 +126,7 @@ impl Container for OwnedSlice { } impl FromIterator for OwnedSlice { - fn from_iterator>(iter: &mut I) -> OwnedSlice { + fn from_iterator>(mut iter: I) -> OwnedSlice { OwnedSlice::from_vec(iter.collect()) } } diff --git a/src/libsyntax/util/small_vector.rs b/src/libsyntax/util/small_vector.rs index ac2b00bed7656..9d6295e3f2801 100644 --- a/src/libsyntax/util/small_vector.rs +++ b/src/libsyntax/util/small_vector.rs @@ -29,18 +29,16 @@ impl Container for SmallVector { } impl FromIterator for SmallVector { - fn from_iterator>(iter: &mut I) -> SmallVector { + fn from_iterator>(iter: I) -> SmallVector { let mut v = Zero; - for val in *iter { - v.push(val); - } + v.extend(iter); v } } impl Extendable for SmallVector { - fn extend>(&mut self, iter: &mut I) { - for val in *iter { + fn extend>(&mut self, mut iter: I) { + for val in iter { self.push(val); } }