]> git.proxmox.com Git - rustc.git/blob - src/vendor/num-traits/src/ops/saturating.rs
New upstream version 1.29.0+dfsg1
[rustc.git] / src / vendor / num-traits / src / ops / saturating.rs
1 /// Saturating math operations
2 pub trait Saturating {
3 /// Saturating addition operator.
4 /// Returns a+b, saturating at the numeric bounds instead of overflowing.
5 fn saturating_add(self, v: Self) -> Self;
6
7 /// Saturating subtraction operator.
8 /// Returns a-b, saturating at the numeric bounds instead of overflowing.
9 fn saturating_sub(self, v: Self) -> Self;
10 }
11
12 macro_rules! saturating_impl {
13 ($trait_name:ident for $($t:ty)*) => {$(
14 impl $trait_name for $t {
15 #[inline]
16 fn saturating_add(self, v: Self) -> Self {
17 Self::saturating_add(self, v)
18 }
19
20 #[inline]
21 fn saturating_sub(self, v: Self) -> Self {
22 Self::saturating_sub(self, v)
23 }
24 }
25 )*}
26 }
27
28 saturating_impl!(Saturating for isize usize i8 u8 i16 u16 i32 u32 i64 u64);
29 #[cfg(has_i128)]
30 saturating_impl!(Saturating for i128 u128);