vec2
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
use crate::Vector2;

impl<T> From<(T, T)> for Vector2<T> {
    fn from((x, y): (T, T)) -> Self {
        Self::new(x, y)
    }
}

impl<T: Copy> From<T> for Vector2<T> {
    /// Splats the value.
    fn from(value: T) -> Self {
        Self::splat(value)
    }
}

impl<T> From<[T; 2]> for Vector2<T> {
    fn from([x, y]: [T; 2]) -> Self {
        Self::new(x, y)
    }
}

impl<T: Copy> TryFrom<&[T]> for Vector2<T> {
    type Error = ();
    /// If the slice len is 2, constructs a new vec.
    fn try_from(value: &[T]) -> Result<Self, Self::Error> {
        value
            .len()
            .eq(&2)
            .then(|| Self::new(value[0], value[1]))
            .ok_or(())
    }
}