[][src]Struct undo::Record

pub struct Record<T> { /* fields omitted */ }

A record of commands.

The record can roll the targets state backwards and forwards by using the undo and redo methods. In addition, the record can notify the user about changes to the stack or the target through signal. The user can give the record a function that is called each time the state changes by using the builder.

Examples

let mut record = Record::default();
record.apply(Add('a'))?;
record.apply(Add('b'))?;
record.apply(Add('c'))?;
assert_eq!(record.as_target(), "abc");
record.undo().unwrap()?;
record.undo().unwrap()?;
record.undo().unwrap()?;
assert_eq!(record.as_target(), "");
record.redo().unwrap()?;
record.redo().unwrap()?;
record.redo().unwrap()?;
assert_eq!(record.as_target(), "abc");

Methods

impl<T> Record<T>[src]

pub fn new(target: T) -> Record<T>[src]

Returns a new record.

pub fn builder() -> RecordBuilder<T>[src]

Returns a builder for a record.

pub fn reserve(&mut self, additional: usize)[src]

Reserves capacity for at least additional more commands.

Panics

Panics if the new capacity overflows usize.

pub fn capacity(&self) -> usize[src]

Returns the capacity of the record.

pub fn shrink_to_fit(&mut self)[src]

Shrinks the capacity of the record as much as possible.

pub fn len(&self) -> usize[src]

Returns the number of commands in the record.

pub fn is_empty(&self) -> bool[src]

Returns true if the record is empty.

pub fn limit(&self) -> usize[src]

Returns the limit of the record.

pub fn set_limit(&mut self, limit: usize) -> usize[src]

Sets the limit of the record and returns the new limit.

If this limit is reached it will start popping of commands at the beginning of the record when new commands are applied. No limit is set by default which means it may grow indefinitely.

If limit < len the first commands will be removed until len == limit. However, if the current active command is going to be removed, the limit is instead adjusted to len - active so the active command is not removed.

Panics

Panics if limit is 0.

pub fn connect(
    &mut self,
    slot: impl FnMut(Signal) + 'static
) -> Option<impl FnMut(Signal) + 'static>
[src]

Sets how the signal should be handled when the state changes.

The previous slot is returned if it exists.

pub fn disconnect(&mut self) -> Option<impl FnMut(Signal) + 'static>[src]

Removes and returns the slot.

pub fn can_undo(&self) -> bool[src]

Returns true if the record can undo.

pub fn can_redo(&self) -> bool[src]

Returns true if the record can redo.

pub fn set_saved(&mut self, saved: bool)[src]

Marks the target as currently being in a saved or unsaved state.

pub fn is_saved(&self) -> bool[src]

Returns true if the target is in a saved state, false otherwise.

pub fn revert(&mut self) -> Option<Result>[src]

Revert the changes done to the target since the saved state.

pub fn current(&self) -> usize[src]

Returns the position of the current command.

pub fn clear(&mut self)[src]

Removes all commands from the record without undoing them.

pub fn apply(&mut self, command: impl Command<T> + 'static) -> Result where
    T: 'static, 
[src]

Pushes the command to the top of the record and executes its apply method.

Errors

If an error occur when executing apply the error is returned.

pub fn undo(&mut self) -> Option<Result>[src]

Calls the undo method for the active command and sets the previous one as the new active one.

Errors

If an error occur when executing undo the error is returned.

pub fn redo(&mut self) -> Option<Result>[src]

Calls the redo method for the active command and sets the next one as the new active one.

Errors

If an error occur when executing redo the error is returned.

pub fn go_to(&mut self, current: usize) -> Option<Result>[src]

Repeatedly calls undo or redo until the command at current is reached.

Errors

If an error occur when executing undo or redo the error is returned.

pub fn time_travel(&mut self, to: &DateTime<impl TimeZone>) -> Option<Result>[src]

Go back or forward in the record to the command that was made closest to the datetime provided.

pub fn extend<C: Command<T> + 'static>(
    &mut self,
    commands: impl IntoIterator<Item = C>
) -> Result where
    T: 'static, 
[src]

Applies each command in the iterator.

Errors

If an error occur when executing apply the error is returned and the remaining commands in the iterator are discarded.

pub fn checkpoint(&mut self) -> Checkpoint<Record<T>, T>[src]

Returns a checkpoint.

pub fn queue(&mut self) -> Queue<Record<T>, T>[src]

Returns a queue.

pub fn to_undo_string(&self) -> Option<String>[src]

Returns the string of the command which will be undone in the next call to undo.

Requires the display feature to be enabled.

pub fn to_redo_string(&self) -> Option<String>[src]

Returns the string of the command which will be redone in the next call to redo.

Requires the display feature to be enabled.

pub fn display(&self) -> Display<Self>[src]

Returns a structure for configurable formatting of the record.

Requires the display feature to be enabled.

pub fn as_target(&self) -> &T[src]

Returns a reference to the target.

pub fn as_mut_target(&mut self) -> &mut T[src]

Returns a mutable reference to the target.

This method should only be used when doing changes that should not be able to be undone.

pub fn into_target(self) -> T[src]

Consumes the record, returning the target.

Trait Implementations

impl<T> AsRef<T> for Record<T>[src]

impl<T> AsMut<T> for Record<T>[src]

impl<T> From<Record<T>> for History<T>[src]

impl<T> From<T> for Record<T>[src]

impl<T> From<History<T>> for Record<T>[src]

impl<T: Default> Default for Record<T>[src]

impl<T> Display for Record<T>[src]

impl<T: Debug> Debug for Record<T>[src]

Auto Trait Implementations

impl<T> !Send for Record<T>

impl<T> !Sync for Record<T>

impl<T> Unpin for Record<T> where
    T: Unpin

impl<T> !UnwindSafe for Record<T>

impl<T> !RefUnwindSafe for Record<T>

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> From<!> for T[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]