Make saturating_mul
a const fn
Co-Authored-By: 9999years <rbt@sent.as>
This commit is contained in:
parent
de52a541d5
commit
b422a19c43
@ -75,6 +75,7 @@
|
||||
#![feature(const_int_checked)]
|
||||
#![feature(const_int_euclidean)]
|
||||
#![feature(const_int_overflowing)]
|
||||
#![feature(const_int_saturating)]
|
||||
#![feature(const_panic)]
|
||||
#![feature(const_fn_union)]
|
||||
#![feature(const_generics)]
|
||||
|
@ -1142,17 +1142,19 @@ assert_eq!(", stringify!($SelfT), "::MIN.saturating_mul(10), ", stringify!($Self
|
||||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "wrapping", since = "1.7.0")]
|
||||
#[rustc_const_unstable(feature = "const_int_saturating", issue = "53718")]
|
||||
#[must_use = "this returns the result of the operation, \
|
||||
without modifying the original"]
|
||||
#[inline]
|
||||
pub fn saturating_mul(self, rhs: Self) -> Self {
|
||||
self.checked_mul(rhs).unwrap_or_else(|| {
|
||||
if (self < 0) == (rhs < 0) {
|
||||
pub const fn saturating_mul(self, rhs: Self) -> Self {
|
||||
match self.checked_mul(rhs) {
|
||||
Some(x) => x,
|
||||
None => if (self < 0) == (rhs < 0) {
|
||||
Self::max_value()
|
||||
} else {
|
||||
Self::min_value()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3195,11 +3197,15 @@ assert_eq!((", stringify!($SelfT), "::MAX).saturating_mul(10), ", stringify!($Se
|
||||
"::MAX);", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "wrapping", since = "1.7.0")]
|
||||
#[rustc_const_unstable(feature = "const_int_saturating", issue = "53718")]
|
||||
#[must_use = "this returns the result of the operation, \
|
||||
without modifying the original"]
|
||||
#[inline]
|
||||
pub fn saturating_mul(self, rhs: Self) -> Self {
|
||||
self.checked_mul(rhs).unwrap_or(Self::max_value())
|
||||
pub const fn saturating_mul(self, rhs: Self) -> Self {
|
||||
match self.checked_mul(rhs) {
|
||||
Some(x) => x,
|
||||
None => Self::max_value(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user