summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/eval/ops.rs3
-rw-r--r--src/geom/ratio.rs8
2 files changed, 11 insertions, 0 deletions
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<Value> {
(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<Value> {
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<f64> for Ratio {
}
}
+impl Div<Ratio> for f64 {
+ type Output = Self;
+
+ fn div(self, other: Ratio) -> Self {
+ self / other.get()
+ }
+}
+
impl Div for Ratio {
type Output = f64;