@@ -410,15 +410,11 @@ fn expand_format_args<'hir>(
410410    let  format_options = use_format_options. then ( || { 
411411        // Generate: 
412412        //     &[format_spec_0, format_spec_1, format_spec_2] 
413-         let  elements:  Vec < _ >  = fmt
414-             . template 
415-             . iter ( ) 
416-             . filter_map ( |piece| { 
417-                 let  FormatArgsPiece :: Placeholder ( placeholder)  = piece else  {  return  None  } ; 
418-                 Some ( make_format_spec ( ctx,  macsp,  placeholder,  & mut  argmap) ) 
419-             } ) 
420-             . collect ( ) ; 
421-         ctx. expr_array_ref ( macsp,  ctx. arena . alloc_from_iter ( elements) ) 
413+         let  elements = ctx. arena . alloc_from_iter ( fmt. template . iter ( ) . filter_map ( |piece| { 
414+             let  FormatArgsPiece :: Placeholder ( placeholder)  = piece else  {  return  None  } ; 
415+             Some ( make_format_spec ( ctx,  macsp,  placeholder,  & mut  argmap) ) 
416+         } ) ) ; 
417+         ctx. expr_array_ref ( macsp,  elements) 
422418    } ) ; 
423419
424420    let  arguments = fmt. arguments . all_args ( ) ; 
@@ -477,10 +473,8 @@ fn expand_format_args<'hir>(
477473        //         <core::fmt::Argument>::new_debug(&arg2), 
478474        //         … 
479475        //     ] 
480-         let  elements:  Vec < _ >  = arguments
481-             . iter ( ) 
482-             . zip ( argmap) 
483-             . map ( |( arg,  ( ( _,  ty) ,  placeholder_span) ) | { 
476+         let  elements = ctx. arena . alloc_from_iter ( arguments. iter ( ) . zip ( argmap) . map ( 
477+             |( arg,  ( ( _,  ty) ,  placeholder_span) ) | { 
484478                let  placeholder_span =
485479                    placeholder_span. unwrap_or ( arg. expr . span ) . with_ctxt ( macsp. ctxt ( ) ) ; 
486480                let  arg_span = match  arg. kind  { 
@@ -493,9 +487,9 @@ fn expand_format_args<'hir>(
493487                    hir:: ExprKind :: AddrOf ( hir:: BorrowKind :: Ref ,  hir:: Mutability :: Not ,  arg) , 
494488                ) ) ; 
495489                make_argument ( ctx,  placeholder_span,  ref_arg,  ty) 
496-             } ) 
497-              . collect ( ) ; 
498-         ctx. expr_array_ref ( macsp,  ctx . arena . alloc_from_iter ( elements) ) 
490+             } , 
491+         ) ) ; 
492+         ctx. expr_array_ref ( macsp,  elements) 
499493    }  else  { 
500494        // Generate: 
501495        //     &match (&arg0, &arg1, &…) { 
@@ -528,19 +522,14 @@ fn expand_format_args<'hir>(
528522                make_argument ( ctx,  placeholder_span,  arg,  ty) 
529523            } , 
530524        ) ) ; 
531-         let  elements:  Vec < _ >  = arguments
532-             . iter ( ) 
533-             . map ( |arg| { 
534-                 let  arg_expr = ctx. lower_expr ( & arg. expr ) ; 
535-                 ctx. expr ( 
536-                     arg. expr . span . with_ctxt ( macsp. ctxt ( ) ) , 
537-                     hir:: ExprKind :: AddrOf ( hir:: BorrowKind :: Ref ,  hir:: Mutability :: Not ,  arg_expr) , 
538-                 ) 
539-             } ) 
540-             . collect ( ) ; 
541-         let  args_tuple = ctx
542-             . arena 
543-             . alloc ( ctx. expr ( macsp,  hir:: ExprKind :: Tup ( ctx. arena . alloc_from_iter ( elements) ) ) ) ; 
525+         let  elements = ctx. arena . alloc_from_iter ( arguments. iter ( ) . map ( |arg| { 
526+             let  arg_expr = ctx. lower_expr ( & arg. expr ) ; 
527+             ctx. expr ( 
528+                 arg. expr . span . with_ctxt ( macsp. ctxt ( ) ) , 
529+                 hir:: ExprKind :: AddrOf ( hir:: BorrowKind :: Ref ,  hir:: Mutability :: Not ,  arg_expr) , 
530+             ) 
531+         } ) ) ; 
532+         let  args_tuple = ctx. arena . alloc ( ctx. expr ( macsp,  hir:: ExprKind :: Tup ( elements) ) ) ; 
544533        let  array = ctx. arena . alloc ( ctx. expr ( macsp,  hir:: ExprKind :: Array ( args) ) ) ; 
545534        let  match_arms = ctx. arena . alloc_from_iter ( [ ctx. arm ( args_pat,  array) ] ) ; 
546535        let  match_expr = ctx. arena . alloc ( ctx. expr_match ( 
0 commit comments