1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use num_traits::{CheckedAdd, CheckedSub, FromPrimitive, PrimInt, Signed, ToPrimitive, Unsigned};

pub trait MarginPrimInt: Send + Sync + PrimInt + ToPrimitive + Unsigned {}
pub trait PointPrimInt:
    Send + Sync + PrimInt + CheckedAdd + CheckedSub + FromPrimitive + Signed
{
}

impl<T> MarginPrimInt for T where T: Send + Sync + PrimInt + ToPrimitive + Unsigned {}
impl<T> PointPrimInt for T where
    T: Send + Sync + PrimInt + CheckedAdd + CheckedSub + FromPrimitive + Signed
{
}