1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
use duplicate::duplicate_item;
use nalgebra::RealField;
use num_traits::Num;
use std::ops::{AddAssign, DivAssign, MulAssign, Neg, RemAssign, SubAssign};
pub trait Scalar:
Neg
+ Num
+ Clone
+ DivAssign
+ RemAssign
+ SubAssign
+ MulAssign
+ AddAssign
+ core::fmt::Debug
+ 'static
+ RealField
+ PartialOrd
{
}
// TODO: commented out types requires nalgebra to relax its requirements
#[duplicate_item(
scalar_type;
// [ i8 ];
// [ i16 ];
// [ i32 ];
// [ i64 ];
// [ i128 ];
// [ isize ];
[ f32 ];
[ f64 ];
// [ Complex<i8> ];
// [ Complex<i16> ];
// [ Complex<i32> ];
// [ Complex<i64> ];
// [ Complex<i128> ];
// [ Complex<isize> ];
// [ Complex<u8> ];
// [ Complex<u16> ];
// [ Complex<u32> ];
// [ Complex<u64> ];
// [ Complex<u128> ];
// [ Complex<usize> ];
// [ Complex<f32> ];
// [ Complex<f64> ];
// [ Ratio<i8> ];
// [ Ratio<i16> ];
// [ Ratio<i32> ];
// [ Ratio<i64> ];
// [ Ratio<i128> ];
// [ Ratio<isize> ];
)]
impl Scalar for scalar_type {}