diff options
| author | Patrick McCarter <p.mccarter@gmail.com> | 2019-02-06 16:15:17 -0500 |
|---|---|---|
| committer | Patrick McCarter <p.mccarter@gmail.com> | 2019-02-06 16:15:17 -0500 |
| commit | 0efb8e4d7392cd4b9c410b96ea209a18c161d92b (patch) | |
| tree | e21a117c1ce8307f06fc39f5ca1167b516aeaf7a /src/libcore | |
| parent | 9204497c2999ce4a3df9802d48cb990be7ee1164 (diff) | |
| download | rust-0efb8e4d7392cd4b9c410b96ea209a18c161d92b.tar.gz rust-0efb8e4d7392cd4b9c410b96ea209a18c161d92b.zip | |
Allow const assignment for int saturating_sub() for #58030
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/num/mod.rs | 54 |
1 files changed, 44 insertions, 10 deletions
diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 55de04db028..104b124bad4 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -932,17 +932,35 @@ $EndFeature, " ```"), #[stable(feature = "rust1", since = "1.0.0")] #[inline] + #[cfg(stage0)] pub fn saturating_sub(self, rhs: Self) -> Self { - #[cfg(stage0)] match self.checked_sub(rhs) { Some(x) => x, None if rhs >= 0 => Self::min_value(), None => Self::max_value(), } - #[cfg(not(stage0))] - { - intrinsics::saturating_sub(self, rhs) - } + } + } + + doc_comment! { + concat!("Saturating integer subtraction. Computes `self - rhs`, saturating at the +numeric bounds instead of overflowing. + +# Examples + +Basic usage: + +``` +", $Feature, "assert_eq!(100", stringify!($SelfT), ".saturating_sub(127), -27); +assert_eq!(", stringify!($SelfT), "::min_value().saturating_sub(100), ", stringify!($SelfT), +"::min_value());", +$EndFeature, " +```"), + #[stable(feature = "rust1", since = "1.0.0")] + #[inline] + #[cfg(not(stage0))] + pub const fn saturating_sub(self, rhs: Self) -> Self { + intrinsics::saturating_sub(self, rhs) } } @@ -2817,16 +2835,32 @@ assert_eq!(13", stringify!($SelfT), ".saturating_sub(127), 0);", $EndFeature, " ```"), #[stable(feature = "rust1", since = "1.0.0")] #[inline] + #[cfg(stage0)] pub fn saturating_sub(self, rhs: Self) -> Self { - #[cfg(stage0)] match self.checked_sub(rhs) { Some(x) => x, None => Self::min_value(), } - #[cfg(not(stage0))] - { - intrinsics::saturating_sub(self, rhs) - } + } + } + + doc_comment! { + concat!("Saturating integer subtraction. Computes `self - rhs`, saturating +at the numeric bounds instead of overflowing. + +# Examples + +Basic usage: + +``` +", $Feature, "assert_eq!(100", stringify!($SelfT), ".saturating_sub(27), 73); +assert_eq!(13", stringify!($SelfT), ".saturating_sub(127), 0);", $EndFeature, " +```"), + #[stable(feature = "rust1", since = "1.0.0")] + #[inline] + #[cfg(not(stage0))] + pub const fn saturating_sub(self, rhs: Self) -> Self { + intrinsics::saturating_sub(self, rhs) } } |
