MapMonoid

Trait MapMonoid 

Source
pub trait MapMonoid {
    type M: Monoid;
    type F: Clone;

    // Required methods
    fn identity_map() -> Self::F;
    fn mapping(
        f: &Self::F,
        x: &<Self::M as Monoid>::S,
    ) -> <Self::M as Monoid>::S;
    fn composition(f: &Self::F, g: &Self::F) -> Self::F;

    // Provided methods
    fn identity_element() -> <Self::M as Monoid>::S { ... }
    fn binary_operation(
        a: &<Self::M as Monoid>::S,
        b: &<Self::M as Monoid>::S,
    ) -> <Self::M as Monoid>::S { ... }
}

Required Associated Types§

Required Methods§

Source

fn identity_map() -> Self::F

Source

fn mapping(f: &Self::F, x: &<Self::M as Monoid>::S) -> <Self::M as Monoid>::S

Source

fn composition(f: &Self::F, g: &Self::F) -> Self::F

Provided Methods§

Source

fn identity_element() -> <Self::M as Monoid>::S

Source

fn binary_operation( a: &<Self::M as Monoid>::S, b: &<Self::M as Monoid>::S, ) -> <Self::M as Monoid>::S

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§