pub enum JournalKind {
Overwrite,
InPlace,
Collection,
CrdtSnapshot,
}Expand description
What a RevClass::Journaled op must record on the history tape to be reversible — the minimal
destroyed information (Bennett/Landauer embedding), not a full state snapshot.
Variants§
Overwrite
Writes a destination register/global that is NOT one of its operands: the operands survive, so reversal only needs the destination’s PRIOR value (one entry). Covers the bulk of the three-address ISA — arithmetic, comparisons, constructors, loads, field reads.
InPlace
Writes a destination that IS one of its operands (x := x ⊕ e): the prior value is lost.
Reversible algebraically when ⊕ is an abelian group op (the R1 promotion to Bijection),
or by journaling the prior value.
Collection
Mutates a heap collection in place (push / pop / remove / index-store / struct-field write): reversal records the structural delta (the pushed slot to pop, the popped element + index to re-insert, the overwritten slot’s old value).
CrdtSnapshot
A CRDT join-semilattice step (merge / resolve) that collapses lattice points and cannot be inverted algebraically: reversal snapshots the target replica’s pre-state (bounded to that one value, not the whole machine).
Trait Implementations§
Source§impl Clone for JournalKind
impl Clone for JournalKind
Source§fn clone(&self) -> JournalKind
fn clone(&self) -> JournalKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for JournalKind
impl Debug for JournalKind
Source§impl PartialEq for JournalKind
impl PartialEq for JournalKind
impl Copy for JournalKind
impl Eq for JournalKind
impl StructuralPartialEq for JournalKind
Auto Trait Implementations§
impl Freeze for JournalKind
impl RefUnwindSafe for JournalKind
impl Send for JournalKind
impl Sync for JournalKind
impl Unpin for JournalKind
impl UnsafeUnpin for JournalKind
impl UnwindSafe for JournalKind
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
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>
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>
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)
&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)
&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
§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
key and return true if they are equal.