Struct egui::util::undoer::Undoer

source ·
pub struct Undoer<State> { /* private fields */ }
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.

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 has_redo(&self, current_state: &State) -> bool

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 redo(&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.

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

impl<'de, State> Deserialize<'de> for Undoer<State>
where State: Deserialize<'de> + Default,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

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

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

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

§

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 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> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where 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 T
where 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 T
where 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + Serialize + for<'a> Deserialize<'a> + Send + Sync,