rstsr_common/
format_layout.rs

1use crate::prelude_dev::*;
2
3impl<D> Debug for Layout<D>
4where
5    D: DimDevAPI,
6{
7    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8        let shape = self.shape().as_ref();
9        let stride = self.stride().as_ref();
10        let offset = self.offset();
11        let is_c_contig = self.c_contig();
12        let is_f_contig = self.f_contig();
13        let is_c_prefer = self.c_prefer();
14        let is_f_prefer = self.f_prefer();
15        let mut contig = String::new();
16        if self.size() == 0 {
17            write!(contig, "Empty")?;
18        } else {
19            if is_c_contig {
20                write!(contig, "C")?;
21            }
22            if is_c_prefer {
23                write!(contig, "c")?;
24            }
25            if is_f_contig {
26                write!(contig, "F")?;
27            }
28            if is_f_prefer {
29                write!(contig, "f")?;
30            }
31            if contig.is_empty() {
32                write!(contig, "Custom")?;
33            }
34        }
35        write!(
36            f,
37            "{}-Dim{}, contiguous: {}\nshape: {:?}, stride: {:?}, offset: {}",
38            self.ndim(),
39            if self.shape().const_ndim().is_none() { " (dyn)" } else { "" },
40            contig,
41            shape,
42            stride,
43            offset,
44        )?;
45        Ok(())
46    }
47}