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
use num_traits::Zero;
use super::VecN;
pub type Scalar_<T> = VecN<T, 4>;
impl<T> Scalar_<T> {
#[inline]
pub fn new(v0: T, v1: T, v2: T, v3: T) -> Self {
Self::from([v0, v1, v2, v3])
}
}
impl<T: Zero> From<T> for Scalar_<T> {
#[inline]
fn from(v0: T) -> Self {
Self::from([v0, T::zero(), T::zero(), T::zero()])
}
}
impl<T: Zero> From<(T, T)> for Scalar_<T> {
#[inline]
fn from(v: (T, T)) -> Self {
Self::from([v.0, v.1, T::zero(), T::zero()])
}
}
impl<T: Zero> From<(T, T, T)> for Scalar_<T> {
#[inline]
fn from(v: (T, T, T)) -> Self {
Self::from([v.0, v.1, v.2, T::zero()])
}
}
impl<T> From<(T, T, T, T)> for Scalar_<T> {
#[inline]
fn from(v: (T, T, T, T)) -> Self {
Self::from([v.0, v.1, v.2, v.3])
}
}