matriz 0.0.2

Zero allocation Rust linear algebra library
Documentation
use core::{
    fmt::Debug,
    ops::{Add, Div, Mul, Sub},
};

pub trait Scalar:
    Debug + Copy + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self>
{
    fn zero() -> Self;
    fn one() -> Self;
}

macro_rules! impl_primitive_scalar {
    ($type:ty, zero = $zero:expr, one = $one:expr) => {
        impl Scalar for $type {
            fn zero() -> Self {
                $zero
            }

            fn one() -> Self {
                $one
            }
        }
    };

    ($($type:ty),*) => {
        $(impl_primitive_scalar!($type, zero = 0, one = 1);)*
    };

    ($($type:ty),*; zero = $zero:expr; one = $one:expr) => {
        $(impl_primitive_scalar!($type, zero = $zero, one = $one);)*
    };
}

impl_primitive_scalar!(f32, f64; zero = 0.0; one = 1.0);
impl_primitive_scalar!(u8, u16, u32, u64, u128, usize);
impl_primitive_scalar!(i8, i16, i32, i64, i128, isize);