diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-02-17 12:14:50 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-02-17 12:14:50 +0100 |
| commit | c7a9bac99224af9673f26ec140af48e1728fe3b5 (patch) | |
| tree | c7611385e8f0245b69e1e8cb24d36d2689808528 /src/geom | |
| parent | ab95627d873239182e7b28b266f8b9f9da5cdbb1 (diff) | |
Better debug implementations for numeric types
Diffstat (limited to 'src/geom')
| -rw-r--r-- | src/geom/angle.rs | 10 | ||||
| -rw-r--r-- | src/geom/fr.rs | 2 | ||||
| -rw-r--r-- | src/geom/length.rs | 20 | ||||
| -rw-r--r-- | src/geom/mod.rs | 5 | ||||
| -rw-r--r-- | src/geom/relative.rs | 2 |
5 files changed, 9 insertions, 30 deletions
diff --git a/src/geom/angle.rs b/src/geom/angle.rs index df2aca17..acf3803d 100644 --- a/src/geom/angle.rs +++ b/src/geom/angle.rs @@ -58,15 +58,7 @@ impl Angle { impl Debug for Angle { fn fmt(&self, f: &mut Formatter) -> fmt::Result { - // Format with the unit that yields the shortest output, preferring - // degrees when tied. - let unit = [AngularUnit::Deg, AngularUnit::Rad] - .iter() - .copied() - .min_by_key(|&unit| self.to_unit(unit).to_string().len()) - .unwrap(); - - write!(f, "{}{:?}", self.to_unit(unit), unit) + write!(f, "{}deg", round_2(self.to_deg())) } } diff --git a/src/geom/fr.rs b/src/geom/fr.rs index e7cd276d..6aa0f5c7 100644 --- a/src/geom/fr.rs +++ b/src/geom/fr.rs @@ -48,7 +48,7 @@ impl Fractional { impl Debug for Fractional { fn fmt(&self, f: &mut Formatter) -> fmt::Result { - write!(f, "{}fr", self.get()) + write!(f, "{}fr", round_2(self.get())) } } diff --git a/src/geom/length.rs b/src/geom/length.rs index b01a7123..a095b9ad 100644 --- a/src/geom/length.rs +++ b/src/geom/length.rs @@ -139,17 +139,7 @@ impl Length { impl Debug for Length { fn fmt(&self, f: &mut Formatter) -> fmt::Result { - use LengthUnit::*; - - // Format with the unit that yields the shortest output, preferring - // larger / metric units when tied. - let unit = [Cm, Mm, In, Pt] - .iter() - .copied() - .min_by_key(|&unit| self.to_unit(unit).to_string().len()) - .unwrap(); - - write!(f, "{}{:?}", self.to_unit(unit), unit) + write!(f, "{}pt", round_2(self.to_pt())) } } @@ -264,12 +254,4 @@ mod tests { fn test_length_unit_conversion() { assert!((Length::mm(150.0).to_cm() - 15.0) < 1e-4); } - - #[test] - fn test_length_formatting() { - assert_eq!(format!("{:?}", Length::pt(23.0)), "23pt"); - assert_eq!(format!("{:?}", Length::pt(-28.3465)), "-1cm"); - assert_eq!(format!("{:?}", Length::cm(12.728)), "12.728cm"); - assert_eq!(format!("{:?}", Length::cm(4.5)), "45mm"); - } } diff --git a/src/geom/mod.rs b/src/geom/mod.rs index a03e88b0..1a48534c 100644 --- a/src/geom/mod.rs +++ b/src/geom/mod.rs @@ -59,3 +59,8 @@ pub trait Get<Index> { *self.get_mut(index) = component; } } + +/// Round a float to two decimal places. +fn round_2(value: f64) -> f64 { + (value * 100.0).round() / 100.0 +} diff --git a/src/geom/relative.rs b/src/geom/relative.rs index 6f6b152f..4b638805 100644 --- a/src/geom/relative.rs +++ b/src/geom/relative.rs @@ -51,7 +51,7 @@ impl Relative { impl Debug for Relative { fn fmt(&self, f: &mut Formatter) -> fmt::Result { - write!(f, "{}%", 100.0 * self.get()) + write!(f, "{}%", round_2(100.0 * self.get())) } } |
