about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-02-24 21:52:27 -0800
committerAlex Crichton <alex@alexcrichton.com>2015-02-24 22:04:21 -0800
commit18878b155ebf3c70445f2a461582475f5ef72c92 (patch)
tree1c969e6b0675b48b99ef79d5b70e7ff269f817a8
parentad04cce61c366968098e2adc8594e21e91c578e0 (diff)
downloadrust-18878b155ebf3c70445f2a461582475f5ef72c92.tar.gz
rust-18878b155ebf3c70445f2a461582475f5ef72c92.zip
std: Require `&mut self` for Iterator::all
Keeps the method consistent with `Iterator::any`.

Closes #22617
[breaking-change]
-rw-r--r--src/libcore/iter.rs4
-rw-r--r--src/librustc/middle/ty.rs2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs
index 48ec1342971..f82538e0b2a 100644
--- a/src/libcore/iter.rs
+++ b/src/libcore/iter.rs
@@ -637,8 +637,8 @@ pub trait IteratorExt: Iterator + Sized {
     /// ```
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
-    fn all<F>(self, mut f: F) -> bool where F: FnMut(Self::Item) -> bool {
-        for x in self { if !f(x) { return false; } }
+    fn all<F>(&mut self, mut f: F) -> bool where F: FnMut(Self::Item) -> bool {
+        for x in self.by_ref() { if !f(x) { return false; } }
         true
     }
 
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index 91313633397..fbb4460f281 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -3883,7 +3883,7 @@ pub fn is_type_representable<'tcx>(cx: &ctxt<'tcx>, sp: Span, ty: Ty<'tcx>)
                 let types_a = substs_a.types.get_slice(subst::TypeSpace);
                 let types_b = substs_b.types.get_slice(subst::TypeSpace);
 
-                let pairs = types_a.iter().zip(types_b.iter());
+                let mut pairs = types_a.iter().zip(types_b.iter());
 
                 pairs.all(|(&a, &b)| same_type(a, b))
             }