Add alternate Display for concise matrix printing
Add format option for concise printing of matrices as semicolon-delimited rows. e.g. println!("{:#}", matrix);
This commit is contained in:
parent
807e4c153a
commit
49e3633c1c
|
@ -1893,6 +1893,7 @@ macro_rules! impl_fmt {
|
||||||
S: RawStorage<T, R, C>,
|
S: RawStorage<T, R, C>,
|
||||||
{
|
{
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
if !f.alternate() { // pretty print in 2D layout
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
fn val_width<T: Scalar + $trait>(val: &T, f: &mut fmt::Formatter<'_>) -> usize {
|
fn val_width<T: Scalar + $trait>(val: &T, f: &mut fmt::Formatter<'_>) -> usize {
|
||||||
match f.precision() {
|
match f.precision() {
|
||||||
|
@ -1924,7 +1925,7 @@ macro_rules! impl_fmt {
|
||||||
|
|
||||||
let max_length_with_space = max_length + 1;
|
let max_length_with_space = max_length + 1;
|
||||||
|
|
||||||
writeln!(f)?;
|
writeln!(f)?; // leading newline to ensure no offset from previous prints
|
||||||
writeln!(
|
writeln!(
|
||||||
f,
|
f,
|
||||||
" ┌ {:>width$} ┐",
|
" ┌ {:>width$} ┐",
|
||||||
|
@ -1948,13 +1949,36 @@ macro_rules! impl_fmt {
|
||||||
writeln!(f, " │")?;
|
writeln!(f, " │")?;
|
||||||
}
|
}
|
||||||
|
|
||||||
writeln!(
|
write!(
|
||||||
f,
|
f,
|
||||||
" └ {:>width$} ┘",
|
" └ {:>width$} ┘",
|
||||||
"",
|
"",
|
||||||
width = max_length_with_space * ncols - 1
|
width = max_length_with_space * ncols - 1
|
||||||
)?;
|
)
|
||||||
writeln!(f)
|
} else { // print on single line with semicolon-delimited rows and comma-delimited columns
|
||||||
|
let (nrows, ncols) = self.shape();
|
||||||
|
write!(f, "[")?;
|
||||||
|
for row in 0..nrows {
|
||||||
|
for col in 0..ncols {
|
||||||
|
if col != 0 {
|
||||||
|
write!(f, ", ")?;
|
||||||
|
}
|
||||||
|
match f.precision() {
|
||||||
|
Some(precision) => write!(
|
||||||
|
f,
|
||||||
|
$fmt_str_with_precision,
|
||||||
|
(*self)[(row, col)],
|
||||||
|
precision
|
||||||
|
)?,
|
||||||
|
None => write!(f, $fmt_str_without_precision, (*self)[(row, col)])?,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if row != nrows - 1 {
|
||||||
|
write!(f, "; ")?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
write!(f, "]")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue