use {
num_traits::identities::{One, Zero},
rand::distributions::uniform::SampleUniform,
std::{fmt::Display, marker::Sized, ops::*},
};
macro_rules! do_impl {
($t:ty) => {
impl Required for $t {}
};
}
pub trait Required:
PartialEq
+ PartialOrd
+ One
+ Zero
+ Add<Output = Self>
+ AddAssign
+ Sub<Output = Self>
+ SubAssign
+ Mul<Output = Self>
+ MulAssign
+ Div<Output = Self>
+ DivAssign
+ Display
+ SampleUniform
+ Clone
+ Copy
where
Self: Sized,
{
}
do_impl!(u8);
do_impl!(u16);
do_impl!(u32);
do_impl!(u64);
do_impl!(u128);
do_impl!(usize);
do_impl!(i8);
do_impl!(i16);
do_impl!(i32);
do_impl!(i64);
do_impl!(i128);
do_impl!(isize);