@@ -709,24 +709,26 @@ impl<T: GridFmt + ArrayValue> GridFmt for Array<T> {
709
709
// SoA (struct-of-arrays)
710
710
let mut is_soa = false ;
711
711
if let Some ( rows) = T :: soa_rows ( self ) {
712
- is_soa = true ;
713
- let metagrid = metagrid. get_or_insert_with ( Metagrid :: new) ;
714
- let mut labels_row = Vec :: with_capacity ( rows. len ( ) ) ;
715
- for ( label, _) in & rows {
716
- labels_row. push ( vec ! [ label. chars( ) . collect( ) ] ) ;
717
- }
718
- metagrid. push ( labels_row) ;
719
- let row_params = GridFmtParams {
720
- label : true ,
721
- soa_row : true ,
722
- ..Default :: default ( )
723
- } ;
724
- for i in 0 ..rows[ 0 ] . 1 . row_count ( ) {
725
- let mut metarow = Vec :: with_capacity ( rows. len ( ) ) ;
726
- for ( _, val) in & rows {
727
- metarow. push ( val. row ( i) . fmt_grid ( row_params) ) ;
712
+ if !rows. iter ( ) . any ( |( _, val) | val. is_map ( ) ) {
713
+ is_soa = true ;
714
+ let metagrid = metagrid. get_or_insert_with ( Metagrid :: new) ;
715
+ let mut labels_row = Vec :: with_capacity ( rows. len ( ) ) ;
716
+ for ( label, _) in & rows {
717
+ labels_row. push ( vec ! [ label. chars( ) . collect( ) ] ) ;
718
+ }
719
+ metagrid. push ( labels_row) ;
720
+ let row_params = GridFmtParams {
721
+ label : true ,
722
+ soa_row : true ,
723
+ ..Default :: default ( )
724
+ } ;
725
+ for i in 0 ..rows[ 0 ] . 1 . row_count ( ) {
726
+ let mut metarow = Vec :: with_capacity ( rows. len ( ) ) ;
727
+ for ( _, val) in & rows {
728
+ metarow. push ( val. row ( i) . fmt_grid ( row_params) ) ;
729
+ }
730
+ metagrid. push ( metarow) ;
728
731
}
729
- metagrid. push ( metarow) ;
730
732
}
731
733
}
732
734
0 commit comments