make abs, wrapping_abs, and overflowing_abs const functions
This commit is contained in:
parent
bea0372a1a
commit
39260d9016
1 changed files with 9 additions and 21 deletions
|
|
@ -1401,12 +1401,8 @@ $EndFeature, "
|
|||
```"),
|
||||
#[stable(feature = "no_panic_abs", since = "1.13.0")]
|
||||
#[inline]
|
||||
pub fn wrapping_abs(self) -> Self {
|
||||
if self.is_negative() {
|
||||
self.wrapping_neg()
|
||||
} else {
|
||||
self
|
||||
}
|
||||
pub const fn wrapping_abs(self) -> Self {
|
||||
(self ^ (self >> ($BITS - 1))).wrapping_sub(self >> ($BITS - 1))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1764,12 +1760,8 @@ $EndFeature, "
|
|||
```"),
|
||||
#[stable(feature = "no_panic_abs", since = "1.13.0")]
|
||||
#[inline]
|
||||
pub fn overflowing_abs(self) -> (Self, bool) {
|
||||
if self.is_negative() {
|
||||
self.overflowing_neg()
|
||||
} else {
|
||||
(self, false)
|
||||
}
|
||||
pub const fn overflowing_abs(self) -> (Self, bool) {
|
||||
(self ^ (self >> ($BITS - 1))).overflowing_sub(self >> ($BITS - 1))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1973,15 +1965,11 @@ $EndFeature, "
|
|||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[inline]
|
||||
#[rustc_inherit_overflow_checks]
|
||||
pub fn abs(self) -> Self {
|
||||
if self.is_negative() {
|
||||
// Note that the #[inline] above means that the overflow
|
||||
// semantics of this negation depend on the crate we're being
|
||||
// inlined into.
|
||||
-self
|
||||
} else {
|
||||
self
|
||||
}
|
||||
pub const fn abs(self) -> Self {
|
||||
// Note that the #[inline] above means that the overflow
|
||||
// semantics of the subtraction depend on the crate we're being
|
||||
// inlined into.
|
||||
(self ^ (self >> ($BITS - 1))) - (self >> ($BITS - 1))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue