nalgebra_glm/
traits.rs

1use approx::AbsDiffEq;
2use num::{Bounded, Signed};
3
4use na::Scalar;
5use simba::scalar::{ClosedAddAssign, ClosedMulAssign, ClosedSubAssign, RealField};
6
7/// A number that can either be an integer or a float.
8pub 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
35/// A number that can be any float type.
36pub trait RealNumber: Number + RealField {}
37
38impl<T: Number + RealField> RealNumber for T {}