Struct agde::event::Unwinder

source ·
pub struct Unwinder<'a> { /* private fields */ }
Expand description

Unwinds the stack of stored events to get the local data to a previous state.

Has nothing to do with unwinding of the program’s stack in a panic!.

Implementations§

source§

impl<'a> Unwinder<'a>

source

pub fn sections<'b>( &'b self, modern_resource_name: &'b str ) -> Option<impl Iterator<Item = &Difference> + 'b>

Get an iterator over the Differences to modern_resource_name.

Returns None if modern_resource_name was destroyed/created during the events we’re tracking.

source

pub fn events(&self) -> impl Iterator<Item = &Event> + DoubleEndedIterator + '_

Get an iterator over the events stored in this unwinder. The first item is the oldest one. The last is the most recent.

Useful it you want to get resources affected since a timestamp:

use std::time::{Duration, SystemTime};
let manager = Manager::new(false, 0, Duration::from_secs(60), 512);

let unwinder = manager.unwinder_to(SystemTime::now() - Duration::from_secs(2));
for event in unwinder.events() {
    println!("Resource {} changed in some way.", event.resource());
}
source

pub fn unwind( &mut self, resource: impl Into<Vec<u8>>, modern_resource_name: &str ) -> Result<Vec<u8>, UnwindError>

Reverts the resource with modern_resource_name to the bottom of the internal list.

Panics

If you called this before and didn’t call Self::unwind, this panics.

Errors

Returns UnwindError::ResourceDestroyed if modern_resource_name has been re-created or destroyed during the timeline of this unwinder.

source

pub fn rewind( &mut self, resource: impl Into<Vec<u8>> ) -> Result<Vec<u8>, (ApplyError, Vec<u8>)>

Rewinds the resource back up.

Errors

Passes errors from Difference::apply.

source

pub fn last_change_to_resource(&self, resource: &str) -> SystemTime

Trait Implementations§

source§

impl<'a> Clone for Unwinder<'a>

source§

fn clone(&self) -> Unwinder<'a>

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<'a> Debug for Unwinder<'a>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Unwinder<'a>

§

impl<'a> Send for Unwinder<'a>

§

impl<'a> Sync for Unwinder<'a>

§

impl<'a> Unpin for Unwinder<'a>

§

impl<'a> UnwindSafe for Unwinder<'a>

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,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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.
const: unstable · 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.
const: unstable · source§

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

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V