@@ -13,7 +13,7 @@ use rustc_hir as hir;
1313use rustc_hir:: def:: DefKind ;
1414use rustc_hir:: def_id:: DefId ;
1515use rustc_hir:: lang_items:: LangItem ;
16- use rustc_hir:: { Expr , ExprKind , Node , QPath } ;
16+ use rustc_hir:: { ExprKind , Node , QPath } ;
1717use rustc_infer:: infer:: {
1818 type_variable:: { TypeVariableOrigin , TypeVariableOriginKind } ,
1919 RegionVariableOrigin ,
@@ -475,29 +475,30 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
475475 let mut applicability = Applicability :: MachineApplicable ;
476476 let args = if let Some ( ( receiver, args) ) = args {
477477 // The first arg is the same kind as the receiver
478- let it = if first_arg. is_some ( ) {
479- Box :: new ( std:: iter:: once ( receiver) . chain ( args. iter ( ) ) )
480- as Box < dyn Iterator < Item = & Expr < ' _ > > >
478+ let explicit_args = if first_arg. is_some ( ) {
479+ std:: iter:: once ( receiver) . chain ( args. iter ( ) ) . collect :: < Vec < _ > > ( )
481480 } else {
482481 // There is no `Self` kind to infer the arguments from
483482 if has_unsuggestable_args {
484483 applicability = Applicability :: HasPlaceholders ;
485484 }
486- Box :: new ( args. iter ( ) ) as _
485+ args. iter ( ) . collect ( )
487486 } ;
488487 format ! (
489488 "({}{})" ,
490489 first_arg. unwrap_or( "" ) ,
491- it. map( |arg| tcx
492- . sess
493- . source_map( )
494- . span_to_snippet( arg. span)
495- . unwrap_or_else( |_| {
496- applicability = Applicability :: HasPlaceholders ;
497- "_" . to_owned( )
498- } ) )
499- . collect:: <Vec <_>>( )
500- . join( ", " ) ,
490+ explicit_args
491+ . iter( )
492+ . map( |arg| tcx
493+ . sess
494+ . source_map( )
495+ . span_to_snippet( arg. span)
496+ . unwrap_or_else( |_| {
497+ applicability = Applicability :: HasPlaceholders ;
498+ "_" . to_owned( )
499+ } ) )
500+ . collect:: <Vec <_>>( )
501+ . join( ", " ) ,
501502 )
502503 } else {
503504 applicability = Applicability :: HasPlaceholders ;
0 commit comments