vec2/
new.rs

1use core::ops::Neg;
2use num_traits::{One, Zero};
3
4#[inline(always)]
5pub fn new<T>(x: T, y: T) -> [T; 2] {
6    [x, y]
7}
8
9#[inline(always)]
10pub fn from_vec3<T>(v: &[T; 3]) -> [T; 2]
11where
12    T: Clone,
13{
14    new(v[0].clone(), v[1].clone())
15}
16
17#[inline(always)]
18pub fn from_vec4<T>(v: &[T; 4]) -> [T; 2]
19where
20    T: Clone,
21{
22    new(v[0].clone(), v[1].clone())
23}
24
25#[inline(always)]
26pub fn new_one<T>() -> [T; 2]
27where
28    T: One,
29{
30    new(T::one(), T::one())
31}
32
33#[inline(always)]
34pub fn new_zero<T>() -> [T; 2]
35where
36    T: Zero,
37{
38    new(T::zero(), T::zero())
39}
40
41#[inline(always)]
42pub fn new_up<T>() -> [T; 2]
43where
44    T: One + Zero,
45{
46    new(T::zero(), T::one())
47}
48
49#[inline(always)]
50pub fn new_down<T>() -> [T; 2]
51where
52    T: Neg<Output = T> + One + Zero,
53{
54    new(T::zero(), -T::one())
55}
56
57#[inline(always)]
58pub fn new_left<T>() -> [T; 2]
59where
60    T: Neg<Output = T> + One + Zero,
61{
62    new(-T::one(), T::zero())
63}
64
65#[inline(always)]
66pub fn new_right<T>() -> [T; 2]
67where
68    T: One + Zero,
69{
70    new(T::one(), T::zero())
71}