Macro alga::impl_group [] [src]

macro_rules! impl_group {
    (<$M:ty> for $($T:tt)+) => { ... };
}

Implements the group trait for types provided.

Examples

#[derive(PartialEq, Clone)]
struct Wrapper<T>(T);

impl<T: AbstractMagma<Additive>> AbstractMagma<Additive> for Wrapper<T> {
    fn operate(&self, right: &Self) -> Self {
        Wrapper(self.0.operate(&right.0))
    }
}

impl<T: Inverse<Additive>> Inverse<Additive> for Wrapper<T> {
    fn inverse(&self) -> Self {
        Wrapper(self.0.inverse())
    }
}

impl<T: Identity<Additive>> Identity<Additive> for Wrapper<T> {
    fn identity() -> Self {
        Wrapper(T::identity())
    }
}

impl_group!(<Additive> for Wrapper<T> where T: AbstractGroup<Additive>);