elementwise 0.3.2

Elementwise operations implemented for standard Rust containers
Documentation
#[macro_use]
mod collection;
pub use self::collection::*;

#[macro_use]
mod array;
pub use self::array::*;

#[cfg(feature = "ndarray")]
#[macro_use]
mod ndarray;

#[cfg(feature = "ndarray")]
pub use self::ndarray::*;

#[macro_use]
mod tuple;
pub use self::tuple::*;

#[macro_use]
mod identity;
pub use self::identity::*;

macro_rules! new_trait {
    ($ot:ident.$om:ident => $nt:ident.$nm:ident) => {
        pub trait $nt<RHS = Self> {
            fn $nm(&self, other: &RHS) -> Self;
        }

        impl_collection!($ot.$om => $nt.$nm);
        impl_array!($ot.$om => $nt.$nm);
        impl_tuple!($ot.$om => $nt.$nm);
    };
}

macro_rules! new_trait_unary {
    ($ot:ident.$om:ident => $nt:ident.$nm:ident) => {
        pub trait $nt {
            fn $nm(&self) -> Self;
        }

        impl_collection_unary!($ot.$om => $nt.$nm);
        impl_array_unary!($ot.$om => $nt.$nm);
        impl_tuple_unary!($ot.$om => $nt.$nm);
    };
}