Trait rust2fun::monoid::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) -> boolwhere 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) -> Selfwhere 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]));

Implementations on Foreign Types§

source§

impl Monoid for u32

source§

fn empty() -> Self

source§

impl Monoid for i64

source§

fn empty() -> Self

source§

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

source§

fn empty() -> Self

source§

impl Monoid for i16

source§

fn empty() -> Self

source§

impl Monoid for i128

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 Monoid for u8

source§

fn empty() -> Self

source§

impl Monoid for isize

source§

fn empty() -> Self

source§

impl Monoid for ()

source§

fn empty() -> Self

source§

fn is_empty(&self) -> bool

source§

impl Monoid for u128

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 Monoid for u16

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<T> Monoid for PhantomData<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> Monoid for LinkedList<T>

source§

fn empty() -> Self

source§

fn is_empty(&self) -> bool

source§

impl Monoid for f32

source§

fn empty() -> Self

source§

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

source§

fn empty() -> Self

source§

fn is_empty(&self) -> bool

source§

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

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> Monoid for (A, B, C, D, E, F)

source§

fn empty() -> Self

source§

impl Monoid for usize

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<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 Vec<T>

source§

fn empty() -> Self

source§

fn is_empty(&self) -> bool

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 Monoid for i32

source§

fn empty() -> Self

source§

impl Monoid for u64

source§

fn empty() -> Self

source§

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

source§

fn empty() -> Self

source§

impl Monoid for f64

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 Monoid for String

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<A: Monoid, B: Monoid, C: Monoid, D: Monoid, E: Monoid> Monoid for (A, B, C, D, E)

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 Monoid for i8

source§

fn empty() -> Self

source§

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

source§

fn empty() -> Self

Implementors§