simple_vector2 2.1.5

A simple libary for generic vector manipulation that just works.
Documentation
use crate::Vector2;

pub trait Vector2ToFloat {
    /// Convert a Vector<T> to its f32 (float) representation.
    ///
    /// # Panics
    /// Panics whenever converting T to f32 by writing `T as f32` would fail.
    fn to_float(self) -> Vector2<f32>;
}

pub trait Vector2ToDouble {
    /// Convert a Vector<T> to its f64 (float) representation.
    ///
    /// # Panics
    /// Panics whenever converting T to f32 by writing `T as f64` would fail.
    fn to_double(self) -> Vector2<f64>;
}

macro_rules! impl_vec_to_decimal {
    ($m:ty) => {
        impl Vector2ToFloat for Vector2<$m> {
            fn to_float(self) -> Vector2<f32> {
                Vector2 {
                    x: self.x as f32,
                    y: self.y as f32,
                }
            }
        }

        /// Convert a Vector<$m> to its f64 (double) representation.
        ///
        /// # Panics
        /// Panics whenever converting $m to f64 by writing `$m as f64` would fail.
        impl Vector2ToDouble for Vector2<$m> {
            fn to_double(self) -> Vector2<f64> {
                Vector2 {
                    x: self.x as f64,
                    y: self.y as f64,
                }
            }
        }
    };
}

impl_vec_to_decimal!(u8);
impl_vec_to_decimal!(u16);
impl_vec_to_decimal!(u32);
impl_vec_to_decimal!(u64);
impl_vec_to_decimal!(u128);
impl_vec_to_decimal!(usize);

impl_vec_to_decimal!(i8);
impl_vec_to_decimal!(i16);
impl_vec_to_decimal!(i32);
impl_vec_to_decimal!(i64);
impl_vec_to_decimal!(i128);
impl_vec_to_decimal!(isize);

impl_vec_to_decimal!(f32);
impl_vec_to_decimal!(f64);