use num::{Signed, FromPrimitive, Bounded}; use approx::AbsDiffEq; use alga::general::{Ring, Lattice}; use na::{Scalar, DimName, DimMin, U1}; use na::allocator::Allocator; /// A type-level number representing a vector, matrix row, or matrix column, dimension. pub trait Dimension: DimName + DimMin {} impl> Dimension for D {} /// A number that can either be an integer or a float. pub trait Number: Scalar + Ring + Lattice + AbsDiffEq + Signed + FromPrimitive + Bounded { } impl + Signed + FromPrimitive + Bounded> Number for T { } #[doc(hidden)] pub trait Alloc: Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator<(usize, usize), R> + Allocator<(usize, usize), C> { } impl Alloc for T where T: Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator<(usize, usize), R> + Allocator<(usize, usize), C> { }