pub enum InverseSpec {
Involution,
SelfFamily,
NamedOp(&'static str),
}Expand description
How a RevClass::Bijection op inverts — the zero-garbage inverse recipe.
Variants§
Involution
The op is its own inverse: applying it twice is the identity (Not-into-self, Swap,
additive negation, XOR-by-a-value). f ∘ f = id.
SelfFamily
The inverse is the SAME op variant with a flag flipped (e.g. CrdtBump { negate } inverts
by flipping negate). The variant carries its own inverse direction.
NamedOp(&'static str)
The inverse is a DISTINCT op variant, named by its Op::name (e.g. RevAdd⁻¹ = RevSub).
The lock checks the name resolves to a real ISA op.
Trait Implementations§
Source§impl Clone for InverseSpec
impl Clone for InverseSpec
Source§fn clone(&self) -> InverseSpec
fn clone(&self) -> InverseSpec
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for InverseSpec
impl Debug for InverseSpec
Source§impl PartialEq for InverseSpec
impl PartialEq for InverseSpec
impl Copy for InverseSpec
impl Eq for InverseSpec
impl StructuralPartialEq for InverseSpec
Auto Trait Implementations§
impl Freeze for InverseSpec
impl RefUnwindSafe for InverseSpec
impl Send for InverseSpec
impl Sync for InverseSpec
impl Unpin for InverseSpec
impl UnsafeUnpin for InverseSpec
impl UnwindSafe for InverseSpec
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.