pub enum RestoreKind<'a> {
Rewind {
undo_for: Option<&'a str>,
},
Undo {
spending: &'a str,
},
}Expand description
Which direction a restore moves the workspace’s undo history, and whose undo stack it touches.
The destination belongs to the kind because the two are not independent:
a rewind files a record under the session it hands the workspace to, and
an undo spends the record filed under the session asking for it. Keeping
them as separate arguments let a meaningless fourth combination be
spelled, and made None at a call site say nothing about which.
Variants§
Rewind
Going back in history, leaving an undo behind, filed under the session this hands the workspace to.
undo_for: None is a rewind with no destination session to be
reachable from: nothing is recorded and the restore is not undoable.
The caller is expected to have said so before running it.
The lock does not reach a destination that is not the performer.
A session’s lock serializes it against itself (D18), and the undo
record is written under undo_for — so naming a different session
writes to a file this lock does not cover. It is safe in the case that
motivates it, where a forking host creates that session immediately
before the call and nothing else is using it yet. A host that hands
undo_for a session already in use is outside what the lock protects,
and the two concurrent push_restore read-modify-writes can lose an
entry (D26).
Undo
Reversing spending’s most recent rewind and consuming that record,
so undoing twice walks back through two rewinds rather than
oscillating between the last two states.
Trait Implementations§
Source§impl<'a> Clone for RestoreKind<'a>
impl<'a> Clone for RestoreKind<'a>
Source§fn clone(&self) -> RestoreKind<'a>
fn clone(&self) -> RestoreKind<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for RestoreKind<'a>
impl<'a> Debug for RestoreKind<'a>
impl<'a> Eq for RestoreKind<'a>
Source§impl<'a> PartialEq for RestoreKind<'a>
impl<'a> PartialEq for RestoreKind<'a>
impl<'a> StructuralPartialEq for RestoreKind<'a>
Auto Trait Implementations§
impl<'a> Freeze for RestoreKind<'a>
impl<'a> RefUnwindSafe for RestoreKind<'a>
impl<'a> Send for RestoreKind<'a>
impl<'a> Sync for RestoreKind<'a>
impl<'a> Unpin for RestoreKind<'a>
impl<'a> UnsafeUnpin for RestoreKind<'a>
impl<'a> UnwindSafe for RestoreKind<'a>
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.