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,
impl<T> Sequence<T>where
T: Interpolate + PartialEq + 'static,
Sourcepub fn new(id: impl Into<TransitionId>, from: T) -> Self
pub fn new(id: impl Into<TransitionId>, from: T) -> Self
Starts a sequence at from, with no steps yet.
Sourcepub fn with_step(self, target: T, transition: Transition) -> Self
pub fn with_step(self, target: T, transition: Transition) -> Self
Appends a step that transitions to target once the previous step ends.
Sourcepub fn with_steps(
self,
steps: impl IntoIterator<Item = SequenceStep<T>>,
) -> Self
pub fn with_steps( self, steps: impl IntoIterator<Item = SequenceStep<T>>, ) -> Self
Appends steps built elsewhere, in order.
pub fn from(&self) -> &T
pub fn steps(&self) -> &[SequenceStep<T>]
Sourcepub fn sample(self, window: &mut Window, cx: &mut App) -> SequenceSample<T>
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§
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>
impl<T> Unpin for Sequence<T>
impl<T> UnsafeUnpin for Sequence<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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