From 81b987e14fd8845336aecc52898c3b336681c8fc Mon Sep 17 00:00:00 2001 From: Kasper Date: Tue, 14 Jan 2020 14:59:18 +0100 Subject: [PATCH] Fixed unit support for modulo --- src/units.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/units.rs b/src/units.rs index 4f125fb..4b76f2e 100644 --- a/src/units.rs +++ b/src/units.rs @@ -322,12 +322,13 @@ pub fn divide(left: Number, right: Number) -> Result { } pub fn modulo(left: Number, right: Number) -> Result { - if left.unit == Unit::NoUnit && right.unit == Unit::NoUnit { - // 3 / 2 + if left.unit.category() == Temperature || right.unit.category() == Temperature { + // if temperature + return Err(format!("Cannot modulo {:?} by {:?}", left.unit, right.unit)) + } else if left.unit.category() == right.unit.category() { + // 5 km % 3 m + let (left, right) = convert_to_lowest(left, right)?; return Ok(Number::new(left.value % right.value, left.unit)) - } else if left.unit != Unit::NoUnit && right.unit == Unit::NoUnit { - // 1 km / 2 - return Ok(Number::new(left.value % right.value, right.unit)) } else { return Err(format!("Cannot modulo {:?} by {:?}", left.unit, right.unit)) }