@@ -565,7 +565,7 @@ struct LateResolutionVisitor<'a, 'b, 'ast> {
565565 /// They will be used to determine the correct lifetime for the fn return type.
566566 /// The `LifetimeElisionCandidate` is used for diagnostics, to suggest introducing named
567567 /// lifetimes.
568- lifetime_elision_candidates : Option < FxIndexMap < LifetimeRes , LifetimeElisionCandidate > > ,
568+ lifetime_elision_candidates : Option < Vec < ( LifetimeRes , LifetimeElisionCandidate ) > > ,
569569
570570 /// The trait that the current context can refer to.
571571 current_trait_ref : Option < ( Module < ' a > , TraitRef ) > ,
@@ -1799,7 +1799,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
17991799 match res {
18001800 LifetimeRes :: Param { .. } | LifetimeRes :: Fresh { .. } | LifetimeRes :: Static => {
18011801 if let Some ( ref mut candidates) = self . lifetime_elision_candidates {
1802- candidates. insert ( res, candidate) ;
1802+ candidates. push ( ( res, candidate) ) ;
18031803 }
18041804 }
18051805 LifetimeRes :: Infer | LifetimeRes :: Error | LifetimeRes :: ElidedAnchor { .. } => { }
@@ -1910,8 +1910,8 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
19101910
19111911 // We do not have a `self` candidate, look at the full list.
19121912 let all_candidates = all_candidates. unwrap ( ) ;
1913- if all_candidates . len ( ) == 1 {
1914- Ok ( * all_candidates . first ( ) . unwrap ( ) . 0 )
1913+ if let [ ( res , _ ) ] = & all_candidates [ .. ] {
1914+ Ok ( * res )
19151915 } else {
19161916 let all_candidates = all_candidates
19171917 . into_iter ( )
@@ -2391,7 +2391,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
23912391 // Do not account for the parameters we just bound for function lifetime elision.
23922392 if let Some ( ref mut candidates) = self . lifetime_elision_candidates {
23932393 for ( _, res) in function_lifetime_rib. bindings . values ( ) {
2394- candidates. remove ( res) ;
2394+ candidates. retain ( | ( r , _ ) | r != res) ;
23952395 }
23962396 }
23972397
0 commit comments