pub enum ReverseMode {
Observable,
FullState,
Adiabatic,
}Expand description
The reversibility fidelity ⇄ space ⇄ time point a recording run is asked to hit — the pebbling
knob (vm/pebble.rs). The tape is only as large as the mode demands.
Variants§
Observable
Restore the program-OBSERVABLE state (named variables, globals, output, iterators); compiler scratch is program-invisible, so its journal is elided. Smallest tape, fastest. The default.
FullState
Restore EVERY register bit-exactly by journaling all destroyed values. Largest tape, simplest.
Adiabatic
Restore every register bit-exactly at the LANDAUER FLOOR: recompute pure scratch on reverse (Bennett uncompute) instead of journaling it. Full fidelity, minimal tape, +recompute time — the adiabatic chip contract.
Trait Implementations§
Source§impl Clone for ReverseMode
impl Clone for ReverseMode
Source§fn clone(&self) -> ReverseMode
fn clone(&self) -> ReverseMode
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 ReverseMode
impl Debug for ReverseMode
Source§impl Default for ReverseMode
impl Default for ReverseMode
Source§fn default() -> ReverseMode
fn default() -> ReverseMode
Returns the “default value” for a type. Read more
Source§impl PartialEq for ReverseMode
impl PartialEq for ReverseMode
impl Copy for ReverseMode
impl Eq for ReverseMode
impl StructuralPartialEq for ReverseMode
Auto Trait Implementations§
impl Freeze for ReverseMode
impl RefUnwindSafe for ReverseMode
impl Send for ReverseMode
impl Sync for ReverseMode
impl Unpin for ReverseMode
impl UnsafeUnpin for ReverseMode
impl UnwindSafe for ReverseMode
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.