Skip to main content

Monoid

Trait Monoid 

Source
pub trait Monoid: Semigroup {
    // Required method
    fn empty() -> Self;
}
Expand description

A Monoid is a Semigroup that has an empty/ zero value

Required Methods§

Source

fn empty() -> Self

For a given Monoid, returns its empty/zero value

§Examples
use frunk::Monoid;

assert_eq!(<i16 as Monoid>::empty(), 0);

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.

Implementations on Foreign Types§

Source§

impl Monoid for f32

Source§

fn empty() -> Self

Source§

impl Monoid for f64

Source§

fn empty() -> Self

Source§

impl Monoid for i8

Source§

fn empty() -> Self

Source§

impl Monoid for i16

Source§

fn empty() -> Self

Source§

impl Monoid for i32

Source§

fn empty() -> Self

Source§

impl Monoid for i64

Source§

fn empty() -> Self

Source§

impl Monoid for isize

Source§

fn empty() -> Self

Source§

impl Monoid for u8

Source§

fn empty() -> Self

Source§

impl Monoid for u16

Source§

fn empty() -> Self

Source§

impl Monoid for u32

Source§

fn empty() -> Self

Source§

impl Monoid for u64

Source§

fn empty() -> Self

Source§

impl Monoid for usize

Source§

fn empty() -> Self

Source§

impl Monoid for String

Available on crate feature alloc only.
Source§

fn empty() -> Self

Source§

impl<A: Monoid> Monoid for (A,)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid> Monoid for (A, B)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid> Monoid for (A, B, C)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid> Monoid for (A, B, C, D)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid> Monoid for (A, B, C, D, E)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid> Monoid for (A, B, C, D, E, F)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid> Monoid for (A, B, C, D, E, F, G)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid> Monoid for (A, B, C, D, E, F, G, H)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid> Monoid for (A, B, C, D, E, F, G, H, I)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid, P: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid, P: Monoid, Q: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid, P: Monoid, Q: Monoid, R: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid, P: Monoid, Q: Monoid, R: Monoid, S: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid, P: Monoid, Q: Monoid, R: Monoid, S: Monoid, T: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)

Source§

fn empty() -> Self

Source§

impl<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid, F: Monoid, G: Monoid, H: Monoid, I: Monoid, J: Monoid, K: Monoid, L: Monoid, M: Monoid, N: Monoid, O: Monoid, P: Monoid, Q: Monoid, R: Monoid, S: Monoid, T: Monoid, U: Monoid> Monoid for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)

Source§

fn empty() -> Self

Source§

impl<T> Monoid for Option<T>
where T: Semigroup + Clone,

Source§

fn empty() -> Self

Source§

impl<T> Monoid for Vec<T>
where T: Clone,

Available on crate feature alloc only.
Source§

fn empty() -> Self

Implementors§