kn0sys_ndarray/
linalg_traits.rs1#[cfg(feature = "std")]
10use num_traits::Float;
11use num_traits::{One, Zero};
12
13#[cfg(feature = "std")]
14use std::fmt;
15use std::ops::{Add, Div, Mul, Sub};
16#[cfg(feature = "std")]
17use std::ops::{AddAssign, DivAssign, MulAssign, RemAssign, SubAssign};
18
19#[cfg(feature = "std")]
20use crate::ScalarOperand;
21
22pub trait LinalgScalar:
27 'static + Copy + Zero + One + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self>
28{
29}
30
31impl<T> LinalgScalar for T where T: 'static + Copy + Zero + One + Add<Output = T> + Sub<Output = T> + Mul<Output = T> + Div<Output = T>
32{}
33
34#[cfg(feature = "std")]
45#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
46pub trait NdFloat:
47 Float
48 + AddAssign
49 + SubAssign
50 + MulAssign
51 + DivAssign
52 + RemAssign
53 + fmt::Display
54 + fmt::Debug
55 + fmt::LowerExp
56 + fmt::UpperExp
57 + ScalarOperand
58 + LinalgScalar
59 + Send
60 + Sync
61{
62}
63
64#[cfg(feature = "std")]
65#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
66impl NdFloat for f32 {}
67#[cfg(feature = "std")]
68#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
69impl NdFloat for f64 {}