Struct egui::util::undoer::Undoer

source ·
pub struct Undoer<State> {
    settings: Settings,
    undos: VecDeque<State>,
    flux: Option<Flux<State>>,
}
Expand description

Automatic undo system.

Every frame you feed it the most recent state. The Undoer compares it with the latest undo point and if there is a change it may create a new undo point.

Undoer follows two simple rules:

  1. If the state has changed since the latest undo point, but has remained stable for stable_time seconds, an new undo point is created.
  2. If the state does not stabilize within auto_save_interval seconds, an undo point is created.

Rule 1) will make sure an undo point is not created until you stop dragging that slider. Rule 2) will make sure that you will get some undo points even if you are constantly changing the state.

Fields§

§settings: Settings§undos: VecDeque<State>

New undoes are added to the back. Two adjacent undo points are never equal. The latest undo point may (often) be the current state.

§flux: Option<Flux<State>>

Implementations§

source§

impl<State> Undoer<State>where State: Clone + PartialEq,

source

pub fn has_undo(&self, current_state: &State) -> bool

Do we have an undo point different from the given state?

source

pub fn is_in_flux(&self) -> bool

Return true if the state is currently changing

source

pub fn undo(&mut self, current_state: &State) -> Option<&State>

source

pub fn add_undo(&mut self, current_state: &State)

Add an undo point if, and only if, there has been a change since the latest undo point.

  • time: current time in seconds.
source

pub fn feed_state(&mut self, current_time: f64, current_state: &State)

Call this as often as you want (e.g. every frame) and Undoer will determine if a new undo point should be created.

  • current_time: current time in seconds.

Trait Implementations§

source§

impl<State: Clone> Clone for Undoer<State>

source§

fn clone(&self) -> Undoer<State>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<State> Debug for Undoer<State>

source§

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

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

impl<State: Default> Default for Undoer<State>

source§

fn default() -> Undoer<State>

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

Auto Trait Implementations§

§

impl<State> RefUnwindSafe for Undoer<State>where State: RefUnwindSafe,

§

impl<State> Send for Undoer<State>where State: Send,

§

impl<State> Sync for Undoer<State>where State: Sync,

§

impl<State> Unpin for Undoer<State>where State: Unpin,

§

impl<State> UnwindSafe for Undoer<State>where State: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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 Twhere U: TryFrom<T>,

§

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.
source§

impl<T> SerializableAny for Twhere T: 'static + Any + Clone + Send + Sync,