1use ndarray::{LinalgScalar, ScalarOperand};
3use num::{FromPrimitive, NumCast, ToPrimitive};
4use serde::Serialize;
5use std::fmt::{Debug, Display};
6use std::cmp::{Ord, PartialEq, PartialOrd};
7use std::hash::Hash;
8use std::ops::AddAssign;
9
10pub trait Numeric:
11 LinalgScalar
12 + ScalarOperand
13 + NumCast
14 + ToPrimitive
15 + Send
16 + Sync
17 + PartialEq
18 + PartialOrd
19 + FromPrimitive
20 + AddAssign
21 + Serialize
22 + Debug
23 + Display
24{
25}
26
27impl Numeric for f32 {}
28impl Numeric for f64 {}
29impl Numeric for i8 {}
30impl Numeric for i16 {}
31impl Numeric for i32 {}
32impl Numeric for i64 {}
33impl Numeric for u8 {}
34impl Numeric for u16 {}
35impl Numeric for u32 {}
36impl Numeric for u64 {}
37
38pub trait Integer: Numeric + Ord + Eq + Hash {}
39impl Integer for u8 {}
40impl Integer for u16 {}
41impl Integer for u32 {}
42impl Integer for u64 {}
43
44impl Integer for i8 {}
45impl Integer for i16 {}
46impl Integer for i32 {}
47impl Integer for i64 {}