haar_lib/algebra/
option.rs1pub use crate::algebra::traits::*;
4use crate::impl_algebra;
5
6pub struct AppendId<M>(pub M);
8
9impl_algebra!({M: Set} AppendId<M>; set: Option<M::Element>; id: |_| None;);
10impl_algebra!({M: BinaryOp} AppendId<M>;
11 op: |s: &Self, a, b|
12 match (a, b) {
13 (Some(a), Some(b)) => Some(s.0.op(a, b)),
14 (a, None) => a,
15 (None, b) => b,
16 };
17);
18impl_algebra!({M: Associative} AppendId<M>; assoc;);
19impl_algebra!({M: Commutative} AppendId<M>; commu;);
20impl_algebra!({M: Idempotence} AppendId<M>; idem;);