@@ -81,12 +81,10 @@ impl<'tcx> TraitAliasExpansionInfo<'tcx> {
8181
8282pub fn expand_trait_aliases < ' tcx > (
8383 tcx : TyCtxt < ' tcx > ,
84- trait_refs : impl IntoIterator < Item = ( ty:: PolyTraitRef < ' tcx > , Span ) > ,
84+ trait_refs : impl Iterator < Item = ( ty:: PolyTraitRef < ' tcx > , Span ) > ,
8585) -> TraitAliasExpander < ' tcx > {
86- let items: Vec < _ > = trait_refs
87- . into_iter ( )
88- . map ( |( trait_ref, span) | TraitAliasExpansionInfo :: new ( trait_ref, span) )
89- . collect ( ) ;
86+ let items: Vec < _ > =
87+ trait_refs. map ( |( trait_ref, span) | TraitAliasExpansionInfo :: new ( trait_ref, span) ) . collect ( ) ;
9088 TraitAliasExpander { tcx, stack : items }
9189}
9290
@@ -199,7 +197,7 @@ pub fn impl_trait_ref_and_oblig<'a, 'tcx>(
199197 param_env : ty:: ParamEnv < ' tcx > ,
200198 impl_def_id : DefId ,
201199 impl_substs : SubstsRef < ' tcx > ,
202- ) -> ( ty:: TraitRef < ' tcx > , Vec < PredicateObligation < ' tcx > > ) {
200+ ) -> ( ty:: TraitRef < ' tcx > , impl Iterator < Item = PredicateObligation < ' tcx > > ) {
203201 let impl_trait_ref = selcx. tcx ( ) . impl_trait_ref ( impl_def_id) . unwrap ( ) ;
204202 let impl_trait_ref = impl_trait_ref. subst ( selcx. tcx ( ) , impl_substs) ;
205203 let Normalized { value : impl_trait_ref, obligations : normalization_obligations1 } =
@@ -210,13 +208,11 @@ pub fn impl_trait_ref_and_oblig<'a, 'tcx>(
210208 let Normalized { value : predicates, obligations : normalization_obligations2 } =
211209 super :: normalize ( selcx, param_env, ObligationCause :: dummy ( ) , & predicates) ;
212210 let impl_obligations =
213- predicates_for_generics ( ObligationCause :: dummy ( ) , 0 , param_env, & predicates) ;
211+ predicates_for_generics ( ObligationCause :: dummy ( ) , 0 , param_env, predicates) ;
214212
215- let impl_obligations: Vec < _ > = impl_obligations
216- . into_iter ( )
217- . chain ( normalization_obligations1)
218- . chain ( normalization_obligations2)
219- . collect ( ) ;
213+ let impl_obligations = impl_obligations
214+ . chain ( normalization_obligations1. into_iter ( ) )
215+ . chain ( normalization_obligations2. into_iter ( ) ) ;
220216
221217 ( impl_trait_ref, impl_obligations)
222218}
@@ -226,20 +222,16 @@ pub fn predicates_for_generics<'tcx>(
226222 cause : ObligationCause < ' tcx > ,
227223 recursion_depth : usize ,
228224 param_env : ty:: ParamEnv < ' tcx > ,
229- generic_bounds : & ty:: InstantiatedPredicates < ' tcx > ,
230- ) -> Vec < PredicateObligation < ' tcx > > {
225+ generic_bounds : ty:: InstantiatedPredicates < ' tcx > ,
226+ ) -> impl Iterator < Item = PredicateObligation < ' tcx > > {
231227 debug ! ( "predicates_for_generics(generic_bounds={:?})" , generic_bounds) ;
232228
233- generic_bounds
234- . predicates
235- . iter ( )
236- . map ( |& predicate| Obligation {
237- cause : cause. clone ( ) ,
238- recursion_depth,
239- param_env,
240- predicate,
241- } )
242- . collect ( )
229+ generic_bounds. predicates . into_iter ( ) . map ( move |predicate| Obligation {
230+ cause : cause. clone ( ) ,
231+ recursion_depth,
232+ param_env,
233+ predicate,
234+ } )
243235}
244236
245237pub fn predicate_for_trait_ref < ' tcx > (
0 commit comments