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