pub struct Groupoid<'a, T> { /* private fields */ }
Expand description
A set equipped with an associative binary operation.
Groupoid
is a representation of the abstract algebraic groupoid.
Associativity is all that is required of its binary operation: its
construction involves a set (specifically an AlgaeSet
) and an
associative BinaryOperation
.
§Examples
use algae_rs::algaeset::AlgaeSet;
use algae_rs::mapping::{BinaryOperation, AssociativeOperation};
use algae_rs::magma::{Magmoid, Groupoid};
let mut add = AssociativeOperation::new(&|a, b| a + b);
let mut groupoid = Groupoid::new(
AlgaeSet::<i32>::all(),
&mut add
);
let groupoid_sum = groupoid.with(1, 2);
assert!(groupoid_sum.is_ok());
assert!(groupoid_sum.unwrap() == 3);
let mut div = AssociativeOperation::new(&|a, b| a / b);
let mut bad_groupoid = Groupoid::new(
AlgaeSet::<f32>::all(),
&mut div,
);
let ok_dividend = bad_groupoid.with(1.0, 2.0);
assert!(ok_dividend.is_ok());
assert!(ok_dividend.unwrap() == 0.5);
let err_dividend = bad_groupoid.with(3.0, 6.0);
assert!(err_dividend.is_err());
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<'a, T> Freeze for Groupoid<'a, T>
impl<'a, T> !RefUnwindSafe for Groupoid<'a, T>
impl<'a, T> !Send for Groupoid<'a, T>
impl<'a, T> !Sync for Groupoid<'a, T>
impl<'a, T> Unpin for Groupoid<'a, T>
impl<'a, T> !UnwindSafe for Groupoid<'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