@@ -477,34 +477,27 @@ impl dyn DynArray + '_ {
477477 DisplayOptions :: CommaSeparatedScalars {
478478 omit_comma_after_space,
479479 } => {
480- write ! ( f, "{}" , if f. alternate( ) { "[\n " } else { "[" } ) ?;
480+ let opening_brace= if f. alternate ( ) { "[\n " } else { "[" } ;
481+ let closing_brace = if f. alternate ( ) { "\n ]" } else { "]" } ;
482+
481483 let sep = if * omit_comma_after_space { "," } else { ", " } ;
482484 let sep = if f. alternate ( ) { ",\n " } else { sep } ;
483485 let limit = self . len ( ) . min ( f. precision ( ) . unwrap_or ( DISPLAY_LIMIT ) ) ;
484486 let is_truncated = self . len ( ) > limit;
487+
488+ let fmt_scalar = |i| self
489+ . scalar_at ( i)
490+ . map_or_else ( |e| format ! ( "<error: {e}>" ) , |s| s. to_string ( ) ) ;
491+
485492 write ! (
486493 f,
487- "{}" ,
488- ( 0 ..( limit - if is_truncated { 3 } else { 0 } ) )
489- . map( |i| self
490- . scalar_at ( i )
491- . map_or_else ( |e| format! ( "<error: {e}>" ) , |s| s . to_string ( ) ) )
494+ "{opening_brace}{}{closing_brace }" ,
495+ ( 0 ..limit. saturating_sub ( 3 ) )
496+ . map( fmt_scalar )
497+ . chain ( std :: iter :: repeat ( "..." . to_string ( ) ) . take ( is_truncated as usize ) )
498+ . chain ( ( self . len ( ) . saturating_sub ( 3 ) .. self . len ( ) ) . map ( fmt_scalar ) )
492499 . format( sep)
493- ) ?;
494- if is_truncated {
495- write ! ( f, "{sep}...{sep}" ) ?;
496- write ! (
497- f,
498- "{}" ,
499- ( self . len( ) - 3 ..self . len( ) )
500- . map( |i| self
501- . scalar_at( i)
502- . map_or_else( |e| format!( "<error: {e}>" ) , |s| s. to_string( ) ) )
503- . format( sep)
504- ) ?;
505- }
506- let closing_brace = if f. alternate ( ) { "\n ]" } else { "]" } ;
507- write ! ( f, "{closing_brace}" )
500+ )
508501 }
509502 DisplayOptions :: TreeDisplay {
510503 buffers,
0 commit comments