@@ -12,7 +12,7 @@ use chalk_ir::{
12
12
use hir_def:: {
13
13
db:: DefDatabase ,
14
14
generics:: {
15
- GenericParamData , GenericParams , LifetimeParamData , TypeOrConstParamData ,
15
+ GenericParamDataRef , GenericParams , LifetimeParamData , TypeOrConstParamData ,
16
16
TypeParamProvenance , WherePredicate , WherePredicateTypeTarget ,
17
17
} ,
18
18
lang_item:: LangItem ,
@@ -277,28 +277,28 @@ impl Generics {
277
277
/// Iterator over types and const params of self, then parent.
278
278
pub ( crate ) fn iter < ' a > (
279
279
& ' a self ,
280
- ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamData ) > + ' a {
280
+ ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamDataRef < ' a > ) > + ' a {
281
281
let from_toc_id = |it : & ' a Generics | {
282
- move |( local_id, p) : ( _ , & TypeOrConstParamData ) | {
282
+ move |( local_id, p) : ( _ , & ' a TypeOrConstParamData ) | {
283
283
let id = TypeOrConstParamId { parent : it. def , local_id } ;
284
284
match p {
285
285
TypeOrConstParamData :: TypeParamData ( p) => (
286
286
GenericParamId :: TypeParamId ( TypeParamId :: from_unchecked ( id) ) ,
287
- GenericParamData :: TypeParamData ( p. clone ( ) ) ,
287
+ GenericParamDataRef :: TypeParamData ( p) ,
288
288
) ,
289
289
TypeOrConstParamData :: ConstParamData ( p) => (
290
290
GenericParamId :: ConstParamId ( ConstParamId :: from_unchecked ( id) ) ,
291
- GenericParamData :: ConstParamData ( p. clone ( ) ) ,
291
+ GenericParamDataRef :: ConstParamData ( p) ,
292
292
) ,
293
293
}
294
294
}
295
295
} ;
296
296
297
297
let from_lt_id = |it : & ' a Generics | {
298
- move |( local_id, p) : ( _ , & LifetimeParamData ) | {
298
+ move |( local_id, p) : ( _ , & ' a LifetimeParamData ) | {
299
299
(
300
300
GenericParamId :: LifetimeParamId ( LifetimeParamId { parent : it. def , local_id } ) ,
301
- GenericParamData :: LifetimeParamData ( p. clone ( ) ) ,
301
+ GenericParamDataRef :: LifetimeParamData ( p) ,
302
302
)
303
303
}
304
304
} ;
@@ -310,28 +310,28 @@ impl Generics {
310
310
/// Iterate over types and const params without parent params.
311
311
pub ( crate ) fn iter_self < ' a > (
312
312
& ' a self ,
313
- ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamData ) > + ' a {
313
+ ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamDataRef < ' a > ) > + ' a {
314
314
let from_toc_id = |it : & ' a Generics | {
315
- move |( local_id, p) : ( _ , & TypeOrConstParamData ) | {
315
+ move |( local_id, p) : ( _ , & ' a TypeOrConstParamData ) | {
316
316
let id = TypeOrConstParamId { parent : it. def , local_id } ;
317
317
match p {
318
318
TypeOrConstParamData :: TypeParamData ( p) => (
319
319
GenericParamId :: TypeParamId ( TypeParamId :: from_unchecked ( id) ) ,
320
- GenericParamData :: TypeParamData ( p. clone ( ) ) ,
320
+ GenericParamDataRef :: TypeParamData ( p) ,
321
321
) ,
322
322
TypeOrConstParamData :: ConstParamData ( p) => (
323
323
GenericParamId :: ConstParamId ( ConstParamId :: from_unchecked ( id) ) ,
324
- GenericParamData :: ConstParamData ( p. clone ( ) ) ,
324
+ GenericParamDataRef :: ConstParamData ( p) ,
325
325
) ,
326
326
}
327
327
}
328
328
} ;
329
329
330
330
let from_lt_id = |it : & ' a Generics | {
331
- move |( local_id, p) : ( _ , & LifetimeParamData ) | {
331
+ move |( local_id, p) : ( _ , & ' a LifetimeParamData ) | {
332
332
(
333
333
GenericParamId :: LifetimeParamId ( LifetimeParamId { parent : it. def , local_id } ) ,
334
- GenericParamData :: LifetimeParamData ( p. clone ( ) ) ,
334
+ GenericParamDataRef :: LifetimeParamData ( p) ,
335
335
)
336
336
}
337
337
} ;
@@ -340,28 +340,29 @@ impl Generics {
340
340
}
341
341
342
342
/// Iterator over types and const params of parent.
343
- pub ( crate ) fn iter_parent (
344
- & self ,
345
- ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamData ) > + ' _ {
343
+ #[ allow( clippy:: needless_lifetimes) ]
344
+ pub ( crate ) fn iter_parent < ' a > (
345
+ & ' a self ,
346
+ ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamDataRef < ' a > ) > + ' a {
346
347
self . parent_generics ( ) . into_iter ( ) . flat_map ( |it| {
347
- let from_toc_id = move |( local_id, p) : ( _ , & TypeOrConstParamData ) | {
348
+ let from_toc_id = move |( local_id, p) : ( _ , & ' a TypeOrConstParamData ) | {
348
349
let id = TypeOrConstParamId { parent : it. def , local_id } ;
349
350
match p {
350
351
TypeOrConstParamData :: TypeParamData ( p) => (
351
352
GenericParamId :: TypeParamId ( TypeParamId :: from_unchecked ( id) ) ,
352
- GenericParamData :: TypeParamData ( p. clone ( ) ) ,
353
+ GenericParamDataRef :: TypeParamData ( p) ,
353
354
) ,
354
355
TypeOrConstParamData :: ConstParamData ( p) => (
355
356
GenericParamId :: ConstParamId ( ConstParamId :: from_unchecked ( id) ) ,
356
- GenericParamData :: ConstParamData ( p. clone ( ) ) ,
357
+ GenericParamDataRef :: ConstParamData ( p) ,
357
358
) ,
358
359
}
359
360
} ;
360
361
361
- let from_lt_id = move |( local_id, p) : ( _ , & LifetimeParamData ) | {
362
+ let from_lt_id = move |( local_id, p) : ( _ , & ' a LifetimeParamData ) | {
362
363
(
363
364
GenericParamId :: LifetimeParamId ( LifetimeParamId { parent : it. def , local_id } ) ,
364
- GenericParamData :: LifetimeParamData ( p. clone ( ) ) ,
365
+ GenericParamDataRef :: LifetimeParamData ( p) ,
365
366
)
366
367
} ;
367
368
let lt_iter = it. params . iter_lt ( ) . map ( from_lt_id) ;
0 commit comments