зеркало из https://github.com/mozilla/gecko-dev.git
29 строки
867 B
Rust
29 строки
867 B
Rust
/// Saturating math operations
|
|
pub trait Saturating {
|
|
/// Saturating addition operator.
|
|
/// Returns a+b, saturating at the numeric bounds instead of overflowing.
|
|
fn saturating_add(self, v: Self) -> Self;
|
|
|
|
/// Saturating subtraction operator.
|
|
/// Returns a-b, saturating at the numeric bounds instead of overflowing.
|
|
fn saturating_sub(self, v: Self) -> Self;
|
|
}
|
|
|
|
macro_rules! saturating_impl {
|
|
($trait_name:ident for $($t:ty)*) => {$(
|
|
impl $trait_name for $t {
|
|
#[inline]
|
|
fn saturating_add(self, v: Self) -> Self {
|
|
Self::saturating_add(self, v)
|
|
}
|
|
|
|
#[inline]
|
|
fn saturating_sub(self, v: Self) -> Self {
|
|
Self::saturating_sub(self, v)
|
|
}
|
|
}
|
|
)*}
|
|
}
|
|
|
|
saturating_impl!(Saturating for isize usize i8 u8 i16 u16 i32 u32 i64 u64);
|