Clean up the code around zero handling.

This commit is contained in:
2018-10-27 15:01:16 -07:00
parent 45f7df00d8
commit 0bec74b18c

View File

@@ -8,12 +8,20 @@ macro_rules! signed_impls {
impl $sname { impl $sname {
pub fn new(negative: bool, value: $name) -> $sname { pub fn new(negative: bool, value: $name) -> $sname {
if value.is_zero() {
$sname{ negative: false, value: value }
} else {
$sname{ negative: negative, value: value } $sname{ negative: negative, value: value }
} }
}
pub fn negate(&self) -> $sname { pub fn negate(&self) -> $sname {
if self.value.is_zero() {
self.clone()
} else {
$sname{ negative: !self.negative, value: self.value.clone() } $sname{ negative: !self.negative, value: self.value.clone() }
} }
}
pub fn abs(&self) -> $sname { pub fn abs(&self) -> $sname {
$sname{ negative: false, value: self.value.clone() } $sname{ negative: false, value: self.value.clone() }