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);
}
}