pub struct Monoid<'a, T> { /* private fields */ }
Expand description
A set equipped with an associative binary operation with identity.
Monoid
is a representation of the abstract algebraic monoid.
Associativity and identity are required of its binary operation. Its
construction involves a set (specifically an AlgaeSet
and a
BinaryOperation
with the aforementioned properties.
§Examples
use algae_rs::algaeset::AlgaeSet;
use algae_rs::mapping::{BinaryOperation, MonoidOperation};
use algae_rs::magma::{Magmoid, Monoid};
let mut add = MonoidOperation::new(&|a, b| a + b, 0);
let mut monoid = Monoid::new(
AlgaeSet::<i32>::all(),
&mut add,
0
);
let monoid_sum = monoid.with(1, 2);
assert!(monoid_sum.is_ok());
assert!(monoid_sum.unwrap() == 3);
let mut bad_add = MonoidOperation::new(&|a, b| a + b, 1);
let mut bad_monoid = Monoid::new(
AlgaeSet::<i32>::all(),
&mut bad_add,
1
);
let bad_monoid_sum = bad_monoid.with(1, 2);
assert!(bad_monoid_sum.is_err());
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<'a, T> Freeze for Monoid<'a, T>where
T: Freeze,
impl<'a, T> !RefUnwindSafe for Monoid<'a, T>
impl<'a, T> !Send for Monoid<'a, T>
impl<'a, T> !Sync for Monoid<'a, T>
impl<'a, T> Unpin for Monoid<'a, T>where
T: Unpin,
impl<'a, T> !UnwindSafe for Monoid<'a, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more