use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign};
pub trait SIMDVector
where
Self: From<Self::Underlying>
+ Default
+ Neg<Output = Self>
+ Add<Self>
+ Add<Self::Element>
+ Sub<Self>
+ Sub<Self::Element>
+ Mul<Self>
+ Mul<Self::Element>
+ Div<Self>
+ Div<Self::Element>
+ AddAssign<Self>
+ AddAssign<Self::Element>
+ SubAssign<Self>
+ SubAssign<Self::Element>
+ MulAssign<Self>
+ MulAssign<Self::Element>
+ DivAssign<Self>
+ DivAssign<Self::Element>, Self::Underlying: From<Self>,
Self::Element: Add<Self> + Sub<Self> + Mul<Self> + Div<Self>,
{
type Underlying;
type Element;
const ELEMENTS: usize;
}