refactor: changed Display implementation

This commit is contained in:
2026-04-29 19:48:23 -06:00
parent 384544c5ae
commit 074b1edbb6
2 changed files with 23 additions and 12 deletions

View File

@@ -580,19 +580,30 @@ impl Mul for Matrix {
}
}
impl Display for Matrix {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let mut display = String::new();
let mut index = 0;
for _i in 0..self.columns {
display += "{";
for _k in 0..self.rows {
display += &format!(" {},", self.data[index]);
index += 1;
impl fmt::Display for Matrix {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let strings: Vec<String> = self.data.iter().map(|x| x.to_string()).collect();
let max_width = strings.iter().map(|s| s.len()).max().unwrap_or(0);
for r in 0..self.rows {
write!(f, "{{ ")?;
for c in 0..self.columns {
let idx = r * self.columns + c;
let val = &strings[idx];
write!(f, "{:>width$}", val, width = max_width)?;
if c != self.columns - 1 {
write!(f, ", ")?;
}
}
display += " }\n";
writeln!(f, " }}")?;
}
write!(f, "{}", display)
Ok(())
}
}