@@ -557,7 +557,7 @@ struct LateResolutionVisitor<'a, 'b, 'ast> {
557557 /// They will be used to determine the correct lifetime for the fn return type.
558558 /// The `LifetimeElisionCandidate` is used for diagnostics, to suggest introducing named
559559 /// lifetimes.
560- lifetime_elision_candidates : Option < FxIndexMap < LifetimeRes , LifetimeElisionCandidate > > ,
560+ lifetime_elision_candidates : Option < Vec < ( LifetimeRes , LifetimeElisionCandidate ) > > ,
561561
562562 /// The trait that the current context can refer to.
563563 current_trait_ref : Option < ( Module < ' a > , TraitRef ) > ,
@@ -1819,7 +1819,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
18191819 match res {
18201820 LifetimeRes :: Param { .. } | LifetimeRes :: Fresh { .. } | LifetimeRes :: Static => {
18211821 if let Some ( ref mut candidates) = self . lifetime_elision_candidates {
1822- candidates. insert ( res, candidate) ;
1822+ candidates. push ( ( res, candidate) ) ;
18231823 }
18241824 }
18251825 LifetimeRes :: Infer | LifetimeRes :: Error | LifetimeRes :: ElidedAnchor { .. } => { }
@@ -1928,8 +1928,8 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
19281928
19291929 // We do not have a `self` candidate, look at the full list.
19301930 let all_candidates = all_candidates. unwrap ( ) ;
1931- if all_candidates . len ( ) == 1 {
1932- Ok ( * all_candidates . first ( ) . unwrap ( ) . 0 )
1931+ if let [ ( res , _ ) ] = & all_candidates [ .. ] {
1932+ Ok ( * res )
19331933 } else {
19341934 let all_candidates = all_candidates
19351935 . into_iter ( )
@@ -2411,7 +2411,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
24112411 // Do not account for the parameters we just bound for function lifetime elision.
24122412 if let Some ( ref mut candidates) = self . lifetime_elision_candidates {
24132413 for ( _, res) in function_lifetime_rib. bindings . values ( ) {
2414- candidates. remove ( res) ;
2414+ candidates. retain ( | ( r , _ ) | r != res) ;
24152415 }
24162416 }
24172417
0 commit comments