1 use ::std::fmt;
2 
3 pub struct DisplaySize(pub f64);
4 
5 impl fmt::Display for DisplaySize {
fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result6     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
7         if self.0 > 999_999_999.0 {
8             write!(f, "{:.1}G", self.0 / 1073741824.0) // 1024 * 1024 * 1024
9         } else if self.0 > 999_999.0 {
10             write!(f, "{:.1}M", self.0 / 1048576.0) //  1024 * 1024
11         } else if self.0 > 999.0 {
12             write!(f, "{:.1}K", self.0 / 1024.0)
13         } else {
14             write!(f, "{}", self.0)
15         }
16     }
17 }
18 
19 pub struct DisplaySizeRounded(pub f64);
20 
21 impl fmt::Display for DisplaySizeRounded {
fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result22     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
23         if self.0 > 999_999_999.0 {
24             write!(f, "{:.0}G", self.0 / 1073741824.0) // 1024 * 1024 * 1024
25         } else if self.0 > 999_999.0 {
26             write!(f, "{:.0}M", self.0 / 1048576.0) //  1024 * 1024
27         } else if self.0 > 999.0 {
28             write!(f, "{:.0}K", self.0 / 1024.0)
29         } else {
30             write!(f, "{}", self.0)
31         }
32     }
33 }
34