From c7db709da53e0559adabc99d483a374224ef5ce8 Mon Sep 17 00:00:00 2001 From: Eric Biedert Date: Tue, 11 Apr 2023 14:13:01 +0200 Subject: Allow treating ratios as floats (#681) --- src/eval/ops.rs | 3 +++ src/geom/ratio.rs | 8 ++++++++ 2 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/eval/ops.rs b/src/eval/ops.rs index 5efb68c3..91160c0d 100644 --- a/src/eval/ops.rs +++ b/src/eval/ops.rs @@ -179,6 +179,7 @@ pub fn mul(lhs: Value, rhs: Value) -> StrResult { (Int(a), Angle(b)) => Angle(a as f64 * b), (Float(a), Angle(b)) => Angle(a * b), + (Ratio(a), Ratio(b)) => Ratio(a * b), (Ratio(a), Int(b)) => Ratio(a * b as f64), (Ratio(a), Float(b)) => Ratio(a * b), (Float(a), Ratio(b)) => Ratio(a * b), @@ -214,8 +215,10 @@ pub fn div(lhs: Value, rhs: Value) -> StrResult { Ok(match (lhs, rhs) { (Int(a), Int(b)) => Float(a as f64 / b as f64), (Int(a), Float(b)) => Float(a as f64 / b), + (Int(a), Ratio(b)) => Float(a as f64 / b), (Float(a), Int(b)) => Float(a / b as f64), (Float(a), Float(b)) => Float(a / b), + (Float(a), Ratio(b)) => Float(a / b), (Length(a), Int(b)) => Length(a / b as f64), (Length(a), Float(b)) => Length(a / b), diff --git a/src/geom/ratio.rs b/src/geom/ratio.rs index 5490bcba..fe87dd6c 100644 --- a/src/geom/ratio.rs +++ b/src/geom/ratio.rs @@ -110,6 +110,14 @@ impl Div for Ratio { } } +impl Div for f64 { + type Output = Self; + + fn div(self, other: Ratio) -> Self { + self / other.get() + } +} + impl Div for Ratio { type Output = f64; -- cgit v1.2.3