Skip to main content

Sequence

Struct Sequence 

Source
pub struct Sequence<T> { /* private fields */ }
Expand description

A chain of value transitions, each starting when the previous one ends.

A sequence begins at from on the frame it is first sampled and runs its steps in order. A step ends at an absolute instant — its start plus its delay and duration — and the next step starts at that same instant, so a frame that lands past a boundary samples the next step where it would have been rather than starting it late. Steps of zero duration complete within the frame that reaches them.

State is keyed by id exactly as super::transition keys its own, and the sequence plays once per key. Re-rendering with the same ID continues it; to replay, include an application-owned generation in the ID, for example ("toast-enter", generation).

A step’s target and transition are captured when the step starts. Handing the step being played a different target restarts the sequence: it begins again at its first step from the value sampled at that instant, as a retargeted transition continues from its current value. Steps other than the one being played are read when the sequence reaches them and are not compared, so a change to an earlier step has no effect on its own. A sequence does not reverse; play a second sequence back to the start under its own key when that is wanted.

Under reduced motion the sequence adopts its last target at once, reports Finished, and requests no frame.

Implementations§

Source§

impl<T> Sequence<T>
where T: Interpolate + PartialEq + 'static,

Source

pub fn new(id: impl Into<TransitionId>, from: T) -> Self

Starts a sequence at from, with no steps yet.

Source

pub fn with_step(self, target: T, transition: Transition) -> Self

Appends a step that transitions to target once the previous step ends.

Source

pub fn with_steps( self, steps: impl IntoIterator<Item = SequenceStep<T>>, ) -> Self

Appends steps built elsewhere, in order.

Source

pub fn from(&self) -> &T

Source

pub fn steps(&self) -> &[SequenceStep<T>]

Source

pub fn sample(self, window: &mut Window, cx: &mut App) -> SequenceSample<T>

Samples the sequence and requests a frame while a step is active.

Trait Implementations§

Source§

impl<T: Clone> Clone for Sequence<T>

Source§

fn clone(&self) -> Sequence<T>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Sequence<T>

§

impl<T> !Send for Sequence<T>

§

impl<T> !Sync for Sequence<T>

§

impl<T> !UnwindSafe for Sequence<T>

§

impl<T> Freeze for Sequence<T>
where T: Freeze, Vec<SequenceStep<T>>: Freeze,

§

impl<T> Unpin for Sequence<T>
where T: Unpin, Vec<SequenceStep<T>>: Unpin,

§

impl<T> UnsafeUnpin for Sequence<T>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more