pub enum RevClass {
Bijection(InverseSpec),
Journaled(JournalKind),
Effectful(EffectKind),
Control,
NonReversible(&'static str),
}Expand description
How an op participates in reversible execution. Four working strategies plus a census bucket
that MUST stay empty. Copy so a lock can classify every variant without allocation.
Variants§
Bijection(InverseSpec)
Injective on machine state with a named inverse — reverses with ZERO garbage (the abelian / involution core; the adiabatic charge-recovery path). The zero-erasure ideal.
Journaled(JournalKind)
Information-losing — reversed by a minimal Bennett delta appended to the history tape
(JournalKind names WHAT the delta records). Correct, but pays garbage until uncomputed.
Effectful(EffectKind)
An observable side effect — reversed via the effect-log and, where the world cannot be
recalled, a NAMED irreversibility barrier (EffectKind names the effect family).
Control
Control flow or a value-preserving instruction — reversed on the recorded execution trace (branch/loop/call decisions), with no data inverse and no journal entry.
NonReversible(&'static str)
GENUINE census of ops with no reversibility story yet. This MUST stay ∅ — see the lock.
Trait Implementations§
impl Copy for RevClass
impl Eq for RevClass
impl StructuralPartialEq for RevClass
Auto Trait Implementations§
impl Freeze for RevClass
impl RefUnwindSafe for RevClass
impl Send for RevClass
impl Sync for RevClass
impl Unpin for RevClass
impl UnsafeUnpin for RevClass
impl UnwindSafe for RevClass
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.