From 0bec74b18cc66227ff7072e6ac402c14d1a162cc Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Sat, 27 Oct 2018 15:01:16 -0700 Subject: [PATCH] Clean up the code around zero handling. --- src/signed/base.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/signed/base.rs b/src/signed/base.rs index 8612e3b..68906f0 100644 --- a/src/signed/base.rs +++ b/src/signed/base.rs @@ -8,12 +8,20 @@ macro_rules! signed_impls { impl $sname { pub fn new(negative: bool, value: $name) -> $sname { + if value.is_zero() { + $sname{ negative: false, value: value } + } else { $sname{ negative: negative, value: value } } + } pub fn negate(&self) -> $sname { + if self.value.is_zero() { + self.clone() + } else { $sname{ negative: !self.negative, value: self.value.clone() } } + } pub fn abs(&self) -> $sname { $sname{ negative: false, value: self.value.clone() }