nekolib/traits/
additive.rs1use std::ops::Add;
7
8pub trait Zero: Add<Output = Self> + Sized {
10 fn zero() -> Self;
12}
13pub trait AddAssoc: Add<Output = Self> + Sized {}
17pub trait AddComm: Add<Output = Self> + Sized {}
21
22macro_rules! impl_trait {
23 (
24 $( impl ($T:ty) for { $( $U:ty ),* } $S:tt )*
25 ) => {
26 $( $( impl $T for $U $S )* )*
27 };
28}
29
30impl_trait! {
31 impl (Zero) for {i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize} {
32 fn zero() -> Self { 0 }
33 }
34 impl (AddAssoc) for {i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize} {}
35 impl (AddComm) for {i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize} {}
36}