diff --git a/compiler/rustc_trait_selection/src/traits/fulfill.rs b/compiler/rustc_trait_selection/src/traits/fulfill.rs index ea27db7b81f87..76a755ed9e09d 100644 --- a/compiler/rustc_trait_selection/src/traits/fulfill.rs +++ b/compiler/rustc_trait_selection/src/traits/fulfill.rs @@ -208,12 +208,14 @@ impl<'a, 'tcx> ObligationProcessor for FulfillProcessor<'a, 'tcx> { _ => { // This `for` loop was once a call to `all()`, but this lower-level // form was a perf win. See #64545 for details. - for &infer_var in &pending_obligation.stalled_on { - if self.selcx.infcx.ty_or_const_infer_var_changed(infer_var) { - return true; + (|| { + for &infer_var in &pending_obligation.stalled_on { + if self.selcx.infcx.ty_or_const_infer_var_changed(infer_var) { + return true; + } } - } - false + false + })() } } }