From 18878b155ebf3c70445f2a461582475f5ef72c92 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 24 Feb 2015 21:52:27 -0800 Subject: [PATCH] std: Require `&mut self` for Iterator::all Keeps the method consistent with `Iterator::any`. Closes #22617 [breaking-change] --- src/libcore/iter.rs | 4 ++-- src/librustc/middle/ty.rs | 2 +- 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(self, mut f: F) -> bool where F: FnMut(Self::Item) -> bool { - for x in self { if !f(x) { return false; } } + fn all(&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)) }