1use approx::AbsDiffEq;
2use num::{Bounded, Signed};
3
4use na::Scalar;
5use simba::scalar::{ClosedAddAssign, ClosedMulAssign, ClosedSubAssign, RealField};
6
7pub trait Number:
9 Scalar
10 + Copy
11 + PartialOrd
12 + ClosedAddAssign
13 + ClosedSubAssign
14 + ClosedMulAssign
15 + AbsDiffEq<Epsilon = Self>
16 + Signed
17 + Bounded
18{
19}
20
21impl<
22 T: Scalar
23 + Copy
24 + PartialOrd
25 + ClosedAddAssign
26 + ClosedSubAssign
27 + ClosedMulAssign
28 + AbsDiffEq<Epsilon = Self>
29 + Signed
30 + Bounded,
31> Number for T
32{
33}
34
35pub trait RealNumber: Number + RealField {}
37
38impl<T: Number + RealField> RealNumber for T {}