@@ -12,7 +12,7 @@ use chalk_ir::{
1212use hir_def:: {
1313 db:: DefDatabase ,
1414 generics:: {
15- GenericParamData , GenericParams , LifetimeParamData , TypeOrConstParamData ,
15+ GenericParamDataRef , GenericParams , LifetimeParamData , TypeOrConstParamData ,
1616 TypeParamProvenance , WherePredicate , WherePredicateTypeTarget ,
1717 } ,
1818 lang_item:: LangItem ,
@@ -277,28 +277,28 @@ impl Generics {
277277 /// Iterator over types and const params of self, then parent.
278278 pub ( crate ) fn iter < ' a > (
279279 & ' a self ,
280- ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamData ) > + ' a {
280+ ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamDataRef < ' a > ) > + ' a {
281281 let from_toc_id = |it : & ' a Generics | {
282- move |( local_id, p) : ( _ , & TypeOrConstParamData ) | {
282+ move |( local_id, p) : ( _ , & ' a TypeOrConstParamData ) | {
283283 let id = TypeOrConstParamId { parent : it. def , local_id } ;
284284 match p {
285285 TypeOrConstParamData :: TypeParamData ( p) => (
286286 GenericParamId :: TypeParamId ( TypeParamId :: from_unchecked ( id) ) ,
287- GenericParamData :: TypeParamData ( p. clone ( ) ) ,
287+ GenericParamDataRef :: TypeParamData ( p) ,
288288 ) ,
289289 TypeOrConstParamData :: ConstParamData ( p) => (
290290 GenericParamId :: ConstParamId ( ConstParamId :: from_unchecked ( id) ) ,
291- GenericParamData :: ConstParamData ( p. clone ( ) ) ,
291+ GenericParamDataRef :: ConstParamData ( p) ,
292292 ) ,
293293 }
294294 }
295295 } ;
296296
297297 let from_lt_id = |it : & ' a Generics | {
298- move |( local_id, p) : ( _ , & LifetimeParamData ) | {
298+ move |( local_id, p) : ( _ , & ' a LifetimeParamData ) | {
299299 (
300300 GenericParamId :: LifetimeParamId ( LifetimeParamId { parent : it. def , local_id } ) ,
301- GenericParamData :: LifetimeParamData ( p. clone ( ) ) ,
301+ GenericParamDataRef :: LifetimeParamData ( p) ,
302302 )
303303 }
304304 } ;
@@ -310,28 +310,28 @@ impl Generics {
310310 /// Iterate over types and const params without parent params.
311311 pub ( crate ) fn iter_self < ' a > (
312312 & ' a self ,
313- ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamData ) > + ' a {
313+ ) -> impl DoubleEndedIterator < Item = ( GenericParamId , GenericParamDataRef < ' a > ) > + ' a {
314314 let from_toc_id = |it : & ' a Generics | {
315- move |( local_id, p) : ( _ , & TypeOrConstParamData ) | {
315+ move |( local_id, p) : ( _ , & ' a TypeOrConstParamData ) | {
316316 let id = TypeOrConstParamId { parent : it. def , local_id } ;
317317 match p {
318318 TypeOrConstParamData :: TypeParamData ( p) => (
319319 GenericParamId :: TypeParamId ( TypeParamId :: from_unchecked ( id) ) ,
320- GenericParamData :: TypeParamData ( p. clone ( ) ) ,
320+ GenericParamDataRef :: TypeParamData ( p) ,
321321 ) ,
322322 TypeOrConstParamData :: ConstParamData ( p) => (
323323 GenericParamId :: ConstParamId ( ConstParamId :: from_unchecked ( id) ) ,
324- GenericParamData :: ConstParamData ( p. clone ( ) ) ,
324+ GenericParamDataRef :: ConstParamData ( p) ,
325325 ) ,
326326 }
327327 }
328328 } ;
329329
330330 let from_lt_id = |it : & ' a Generics | {
331- move |( local_id, p) : ( _ , & LifetimeParamData ) | {
331+ move |( local_id, p) : ( _ , & ' a LifetimeParamData ) | {
332332 (
333333 GenericParamId :: LifetimeParamId ( LifetimeParamId { parent : it. def , local_id } ) ,
334- GenericParamData :: LifetimeParamData ( p. clone ( ) ) ,
334+ GenericParamDataRef :: LifetimeParamData ( p) ,
335335 )
336336 }
337337 } ;
@@ -340,28 +340,29 @@ impl Generics {
340340 }
341341
342342 /// 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 {
346347 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 ) | {
348349 let id = TypeOrConstParamId { parent : it. def , local_id } ;
349350 match p {
350351 TypeOrConstParamData :: TypeParamData ( p) => (
351352 GenericParamId :: TypeParamId ( TypeParamId :: from_unchecked ( id) ) ,
352- GenericParamData :: TypeParamData ( p. clone ( ) ) ,
353+ GenericParamDataRef :: TypeParamData ( p) ,
353354 ) ,
354355 TypeOrConstParamData :: ConstParamData ( p) => (
355356 GenericParamId :: ConstParamId ( ConstParamId :: from_unchecked ( id) ) ,
356- GenericParamData :: ConstParamData ( p. clone ( ) ) ,
357+ GenericParamDataRef :: ConstParamData ( p) ,
357358 ) ,
358359 }
359360 } ;
360361
361- let from_lt_id = move |( local_id, p) : ( _ , & LifetimeParamData ) | {
362+ let from_lt_id = move |( local_id, p) : ( _ , & ' a LifetimeParamData ) | {
362363 (
363364 GenericParamId :: LifetimeParamId ( LifetimeParamId { parent : it. def , local_id } ) ,
364- GenericParamData :: LifetimeParamData ( p. clone ( ) ) ,
365+ GenericParamDataRef :: LifetimeParamData ( p) ,
365366 )
366367 } ;
367368 let lt_iter = it. params . iter_lt ( ) . map ( from_lt_id) ;
0 commit comments