|
@@ -32,12 +32,16 @@ wrapping_impl!(WrappingAdd, wrapping_add, u16);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, u32);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, u32);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, u64);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, u64);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, usize);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, usize);
|
|
|
|
+#[cfg(feature = "i128")]
|
|
|
|
+wrapping_impl!(WrappingAdd, wrapping_add, u128);
|
|
|
|
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i8);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i8);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i16);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i16);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i32);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i32);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i64);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, i64);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, isize);
|
|
wrapping_impl!(WrappingAdd, wrapping_add, isize);
|
|
|
|
+#[cfg(feature = "i128")]
|
|
|
|
+wrapping_impl!(WrappingAdd, wrapping_add, i128);
|
|
|
|
|
|
/// Performs subtraction that wraps around on overflow.
|
|
/// Performs subtraction that wraps around on overflow.
|
|
pub trait WrappingSub: Sized + Sub<Self, Output=Self> {
|
|
pub trait WrappingSub: Sized + Sub<Self, Output=Self> {
|
|
@@ -51,12 +55,16 @@ wrapping_impl!(WrappingSub, wrapping_sub, u16);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, u32);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, u32);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, u64);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, u64);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, usize);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, usize);
|
|
|
|
+#[cfg(feature = "i128")]
|
|
|
|
+wrapping_impl!(WrappingSub, wrapping_sub, u128);
|
|
|
|
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i8);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i8);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i16);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i16);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i32);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i32);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i64);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, i64);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, isize);
|
|
wrapping_impl!(WrappingSub, wrapping_sub, isize);
|
|
|
|
+#[cfg(feature = "i128")]
|
|
|
|
+wrapping_impl!(WrappingSub, wrapping_sub, i128);
|
|
|
|
|
|
/// Performs multiplication that wraps around on overflow.
|
|
/// Performs multiplication that wraps around on overflow.
|
|
pub trait WrappingMul: Sized + Mul<Self, Output=Self> {
|
|
pub trait WrappingMul: Sized + Mul<Self, Output=Self> {
|
|
@@ -70,12 +78,16 @@ wrapping_impl!(WrappingMul, wrapping_mul, u16);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, u32);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, u32);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, u64);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, u64);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, usize);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, usize);
|
|
|
|
+#[cfg(feature = "i128")]
|
|
|
|
+wrapping_impl!(WrappingMul, wrapping_mul, u128);
|
|
|
|
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i8);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i8);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i16);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i16);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i32);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i32);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i64);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, i64);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, isize);
|
|
wrapping_impl!(WrappingMul, wrapping_mul, isize);
|
|
|
|
+#[cfg(feature = "i128")]
|
|
|
|
+wrapping_impl!(WrappingMul, wrapping_mul, i128);
|
|
|
|
|
|
// Well this is a bit funny, but all the more appropriate.
|
|
// Well this is a bit funny, but all the more appropriate.
|
|
impl<T: WrappingAdd> WrappingAdd for Wrapping<T> where Wrapping<T>: Add<Output = Wrapping<T>> {
|
|
impl<T: WrappingAdd> WrappingAdd for Wrapping<T> where Wrapping<T>: Add<Output = Wrapping<T>> {
|