From 7efee8dd05b4a2439451b47de8df79c959faffcd Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Sat, 24 Aug 2019 16:04:32 -0700 Subject: [PATCH] Use rposition to find the position of an elem --- src/librustc_mir/build/matches/mod.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/librustc_mir/build/matches/mod.rs b/src/librustc_mir/build/matches/mod.rs index 8c94723e3cc..64368ab6046 100644 --- a/src/librustc_mir/build/matches/mod.rs +++ b/src/librustc_mir/build/matches/mod.rs @@ -942,16 +942,15 @@ fn select_matched_candidates( for Binding { source, .. } in matched_candidates.iter().flat_map(|candidate| &candidate.bindings) { - for (i, elem) in source.projection.iter().enumerate().rev() { + if let Some(i) = + source.projection.iter().rposition(|elem| *elem == ProjectionElem::Deref) + { let proj_base = &source.projection[..i]; - if let ProjectionElem::Deref = elem { - fake_borrows.insert(Place { - base: source.base.clone(), - projection: proj_base.to_vec().into_boxed_slice(), - }); - break; - } + fake_borrows.insert(Place { + base: source.base.clone(), + projection: proj_base.to_vec().into_boxed_slice(), + }); } } } -- 2.44.0