Skip to main content

DocumentHistory

Struct DocumentHistory 

Source
pub struct DocumentHistory { /* private fields */ }
Expand description

Undo/redo history for a document.

Changes are pushed as they are applied — prefer push_applied with the result of DocumentChange::try_apply, so the recorded undo evidence is derived from the document rather than caller-authored. undo returns the inverse of the most-recent change; redo re-applies a change that was undone.

Implementations§

Source§

impl DocumentHistory

Source

pub fn new() -> Self

Creates an empty history.

Source

pub fn push_applied(&mut self, applied: &AppliedChange)

Records a verified change. Any future (redo) stack is cleared.

The forward change is reconstructed from the applied change’s derived inverse, so both undo and redo evidence come from the document itself.

Source

pub fn push(&mut self, change: DocumentChange)

Records a new change. Any future (redo) stack is cleared.

The change’s old_text is trusted as-is; prefer push_applied, which records evidence derived from the document.

Source

pub fn undo(&mut self) -> Option<&DocumentChange>

Removes the most-recent change from the undo stack and returns a reference to it, or None if the stack is empty.

The inverse of the returned change is placed on the redo stack.

Source

pub fn redo(&mut self) -> Option<&DocumentChange>

Re-applies the most-recently-undone change and returns a reference to it, or None if the redo stack is empty.

Source

pub fn can_undo(&self) -> bool

Returns true if there is at least one change to undo.

Source

pub fn can_redo(&self) -> bool

Returns true if there is at least one change to redo.

Trait Implementations§

Source§

impl Debug for DocumentHistory

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DocumentHistory

Source§

fn default() -> DocumentHistory

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.