@@ -612,12 +612,16 @@ impl<'a> LoweringContext<'a> {
612
612
// This is used to track which lifetimes have already been defined, and
613
613
// which are new in-band lifetimes that need to have a definition created
614
614
// for them.
615
- fn with_in_scope_lifetime_defs < T , F > ( & mut self , lt_defs : & [ LifetimeDef ] , f : F ) -> T
615
+ fn with_in_scope_lifetime_defs < ' l , T , F > (
616
+ & mut self ,
617
+ lt_defs : impl Iterator < Item = & ' l LifetimeDef > ,
618
+ f : F ,
619
+ ) -> T
616
620
where
617
621
F : FnOnce ( & mut LoweringContext ) -> T ,
618
622
{
619
623
let old_len = self . in_scope_lifetimes . len ( ) ;
620
- let lt_def_names = lt_defs. iter ( ) . map ( |lt_def| lt_def. lifetime . ident . name ) ;
624
+ let lt_def_names = lt_defs. map ( |lt_def| lt_def. lifetime . ident . name ) ;
621
625
self . in_scope_lifetimes . extend ( lt_def_names) ;
622
626
623
627
let res = f ( self ) ;
@@ -657,14 +661,13 @@ impl<'a> LoweringContext<'a> {
657
661
F : FnOnce ( & mut LoweringContext ) -> T ,
658
662
{
659
663
let ( in_band_defs, ( mut lowered_generics, res) ) = self . with_in_scope_lifetime_defs (
660
- & generics
664
+ generics
661
665
. params
662
666
. iter ( )
663
- . filter_map ( |p| match * p {
664
- GenericParam :: Lifetime ( ref ld) => Some ( ld. clone ( ) ) ,
667
+ . filter_map ( |p| match p {
668
+ GenericParam :: Lifetime ( ld) => Some ( ld) ,
665
669
_ => None ,
666
- } )
667
- . collect :: < Vec < _ > > ( ) ,
670
+ } ) ,
668
671
|this| {
669
672
this. collect_in_band_defs ( parent_id, |this| {
670
673
( this. lower_generics ( generics) , f ( this) )
@@ -923,13 +926,12 @@ impl<'a> LoweringContext<'a> {
923
926
hir:: TyRptr ( lifetime, self . lower_mt ( mt, itctx) )
924
927
}
925
928
TyKind :: BareFn ( ref f) => self . with_in_scope_lifetime_defs (
926
- & f. generic_params
929
+ f. generic_params
927
930
. iter ( )
928
- . filter_map ( |p| match * p {
929
- GenericParam :: Lifetime ( ref ld) => Some ( ld. clone ( ) ) ,
931
+ . filter_map ( |p| match p {
932
+ GenericParam :: Lifetime ( ld) => Some ( ld) ,
930
933
_ => None ,
931
- } )
932
- . collect :: < Vec < _ > > ( ) ,
934
+ } ) ,
933
935
|this| {
934
936
hir:: TyBareFn ( P ( hir:: BareFnTy {
935
937
generic_params : this. lower_generic_params ( & f. generic_params , & NodeMap ( ) ) ,
@@ -1874,13 +1876,12 @@ impl<'a> LoweringContext<'a> {
1874
1876
span,
1875
1877
} ) => {
1876
1878
self . with_in_scope_lifetime_defs (
1877
- & bound_generic_params
1879
+ bound_generic_params
1878
1880
. iter ( )
1879
- . filter_map ( |p| match * p {
1880
- GenericParam :: Lifetime ( ref ld) => Some ( ld. clone ( ) ) ,
1881
+ . filter_map ( |p| match p {
1882
+ GenericParam :: Lifetime ( ld) => Some ( ld) ,
1881
1883
_ => None ,
1882
- } )
1883
- . collect :: < Vec < _ > > ( ) ,
1884
+ } ) ,
1884
1885
|this| {
1885
1886
hir:: WherePredicate :: BoundPredicate ( hir:: WhereBoundPredicate {
1886
1887
bound_generic_params : this. lower_generic_params (
@@ -2169,14 +2170,13 @@ impl<'a> LoweringContext<'a> {
2169
2170
} ) ;
2170
2171
2171
2172
let new_impl_items = self . with_in_scope_lifetime_defs (
2172
- & ast_generics
2173
+ ast_generics
2173
2174
. params
2174
2175
. iter ( )
2175
- . filter_map ( |p| match * p {
2176
- GenericParam :: Lifetime ( ref ld) => Some ( ld. clone ( ) ) ,
2176
+ . filter_map ( |p| match p {
2177
+ GenericParam :: Lifetime ( ld) => Some ( ld) ,
2177
2178
_ => None ,
2178
- } )
2179
- . collect :: < Vec < _ > > ( ) ,
2179
+ } ) ,
2180
2180
|this| {
2181
2181
impl_items
2182
2182
. iter ( )
0 commit comments