Skip to content

Commit f714644

Browse files
committed
disable SoA formatting with map values
1 parent 70a33df commit f714644

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/grid_fmt.rs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -709,24 +709,26 @@ impl<T: GridFmt + ArrayValue> GridFmt for Array<T> {
709709
// SoA (struct-of-arrays)
710710
let mut is_soa = false;
711711
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);
728731
}
729-
metagrid.push(metarow);
730732
}
731733
}
732734

0 commit comments

Comments
 (0)