Monoid

Trait Monoid 

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

    // Provided methods
    fn is_empty(&self) -> bool
       where Self: Eq + Sized { ... }
    fn combine_all<I>(iter: I) -> Self
       where I: IntoIterator<Item = Self>,
             Self: Sized { ... }
}
Expand description

A Monoid is a Semigroup with an identity element.

Required Methods§

Source

fn empty() -> Self

Returns the identity element for this monoid.

§Examples
use rust2fun::prelude::*;

assert_eq!(0, i32::empty());
assert_eq!((0, "".to_owned()), <(i32, String)>::empty());

Provided Methods§

Source

fn is_empty(&self) -> bool
where Self: Eq + Sized,

Returns true if the value is the identity element.

§Examples
use rust2fun::prelude::*;

assert!(i32::empty().is_empty());
assert!(!1.is_empty());
Source

fn combine_all<I>(iter: I) -> Self
where I: IntoIterator<Item = Self>, Self: Sized,

Given an iterator of Monoids, combine them all into one. If the sequence is empty, returns Monoid::empty().

§Examples
use rust2fun::prelude::*;

assert_eq!(0, Monoid::combine_all(Vec::<u8>::new()));
assert_eq!(6, Monoid::combine_all(vec![1,2,3]));

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 i128

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 u128

Source§

fn empty() -> Self

Source§

impl Monoid for ()

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl Monoid for usize

Source§

fn empty() -> Self

Source§

impl Monoid for String

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

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<K: Eq + Hash, V: Semigroup> Monoid for HashMap<K, V>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T> Monoid for LinkedList<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T> Monoid for VecDeque<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T> Monoid for Vec<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T> Monoid for PhantomData<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T: Semigroup> Monoid for Option<T>

Source§

fn empty() -> Self

Source§

impl<T: Eq + Hash> Monoid for HashSet<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T: Ord> Monoid for BinaryHeap<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Source§

impl<T: Ord> Monoid for BTreeSet<T>

Source§

fn empty() -> Self

Source§

fn is_empty(&self) -> bool

Implementors§