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§
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
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.