rstsr_common/
format_layout.rs1use 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}