rewrite checked_{div,rem} to no contain any reference to panics
even without optimizations
This commit is contained in:
parent
ca76c7e014
commit
c66ae29883
1 changed files with 6 additions and 8 deletions
|
|
@ -516,11 +516,10 @@ macro_rules! int_impl {
|
|||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[inline]
|
||||
pub fn checked_div(self, other: Self) -> Option<Self> {
|
||||
if other == 0 {
|
||||
if other == 0 || (self == Self::min_value() && other == -1) {
|
||||
None
|
||||
} else {
|
||||
let (a, b) = self.overflowing_div(other);
|
||||
if b {None} else {Some(a)}
|
||||
Some(unsafe { intrinsics::unchecked_div(self, other) })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -541,11 +540,10 @@ macro_rules! int_impl {
|
|||
#[stable(feature = "wrapping", since = "1.7.0")]
|
||||
#[inline]
|
||||
pub fn checked_rem(self, other: Self) -> Option<Self> {
|
||||
if other == 0 {
|
||||
if other == 0 || (self == Self::min_value() && other == -1) {
|
||||
None
|
||||
} else {
|
||||
let (a, b) = self.overflowing_rem(other);
|
||||
if b {None} else {Some(a)}
|
||||
Some(unsafe { intrinsics::unchecked_rem(self, other) })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1688,7 +1686,7 @@ macro_rules! uint_impl {
|
|||
pub fn checked_div(self, other: Self) -> Option<Self> {
|
||||
match other {
|
||||
0 => None,
|
||||
other => Some(self / other),
|
||||
other => Some(unsafe { intrinsics::unchecked_div(self, other) }),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1709,7 +1707,7 @@ macro_rules! uint_impl {
|
|||
if other == 0 {
|
||||
None
|
||||
} else {
|
||||
Some(self % other)
|
||||
Some(unsafe { intrinsics::unchecked_rem(self, other) })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue