redstone_ml/ndarray/
print.rs1use crate::dtype::RawDataType;
2use crate::{NdArray, StridedMemory};
3use std::fmt;
4
5
6impl<T: RawDataType> fmt::Debug for NdArray<'_, T> {
8 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9 fn fmt_inner<T: fmt::Debug>(f: &mut fmt::Formatter<'_>,
10 shape: &[usize],
11 iter: &mut dyn Iterator<Item=T>,
12 level: usize) -> fmt::Result {
13 if shape.is_empty() {
14 return Ok(write!(f, "{:?}", iter.next().unwrap())?);
15 }
16
17 if shape.len() == 1 {
18 write!(f, "[")?;
19 for i in 0..shape[0] {
20 if i > 0 { write!(f, ", ")?; }
21 write!(f, "{:?}", iter.next().unwrap())?
22 }
23 write!(f, "]")
24 } else {
25 write!(f, "[")?;
26 for i in 0..shape[0] {
27 if i > 0 {
28 write!(f, ",{:indent$}", "", indent = (level + 1) * 2)?;
29 } else {
30 write!(f, "{:indent$}", "", indent = (level + 1) * 2)?;
31 }
32 fmt_inner(f, &shape[1..], iter, level + 1)?;
33 }
34 write!(f, "{:indent$}]", "", indent = level * 2)
35 }
36 }
37
38 fmt_inner(f, self.shape(), &mut self.flatiter(), 0)
39 }
40}