@@ -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