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 {}