pub struct Motions<K> { /* private fields */ }Expand description
Component-owned keyed transitions using the shared engine and Kit’s clock.
Batch results follow declaration order; stable keys preserve interruption
history through reordering. Omitted entries stay retained. Cleanup and capacity
methods are available through core::Motions.
Retain this collection in the view and notify after changing model targets.
Implementations§
Source§impl<K> Motions<K>
impl<K> Motions<K>
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Reserves space for at least capacity keys, without creating trajectories.
Source§impl<K: Eq + Hash> Motions<K>
impl<K: Eq + Hash> Motions<K>
Sourcepub fn frame<const N: usize>(
&mut self,
declarations: [(K, Motion); N],
window: &mut Window,
cx: &App,
) -> [Frame; N]
pub fn frame<const N: usize>( &mut self, declarations: [(K, Motion); N], window: &mut Window, cx: &App, ) -> [Frame; N]
Samples a batch during render using one executor timestamp and Kit’s reduced-motion preference. Requests one frame if any returned frame is active. Omitted entries do not request frames. Do not mix with explicit sample times.
§Panics
Panics on duplicate keys. Earlier entries may already have been sampled.
Sourcepub fn frame_one(
&mut self,
key: K,
motion: Motion,
window: &mut Window,
cx: &App,
) -> Frame
pub fn frame_one( &mut self, key: K, motion: Motion, window: &mut Window, cx: &App, ) -> Frame
Samples one native entry. Use Self::frame to synchronize several entries.
Sourcepub fn sample<const N: usize>(
&mut self,
declarations: [(K, Motion); N],
now: Duration,
reduced_motion: bool,
) -> [Frame; N]
pub fn sample<const N: usize>( &mut self, declarations: [(K, Motion); N], now: Duration, reduced_motion: bool, ) -> [Frame; N]
Samples explicit elapsed time, returning Kit-ready frames. Do not mix
this clock with Self::frame. See the shared engine for lifecycle details.
§Panics
Panics on duplicate keys. Earlier entries may already have been sampled.
Methods from Deref<Target = Motions<K>>§
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Cancels all trajectories and drops their keys, keeping table capacity.
The collection’s clock continues. Call Self::shrink_to_fit to release
unused table storage, or drop the collection to release everything.
Sourcepub fn sample<const N: usize>(
&mut self,
declarations: [(K, Motion); N],
now: Duration,
reduced_motion: bool,
) -> [Frame; N]
pub fn sample<const N: usize>( &mut self, declarations: [(K, Motion); N], now: Duration, reduced_motion: bool, ) -> [Frame; N]
Samples a batch at one absolute monotonic timestamp, returning owned frames.
Springs preserve velocity when retargeted. Reduced motion snaps each
submitted entry; backward timestamps clamp to the collection’s last sample.
An empty batch is valid and leaves entries retained. Expected cost is O(N)
hash lookups plus sampling, independent of the number of omitted entries.
Do not mix explicit timestamps with native frame calls on this collection.
§Panics
Panics if a key occurs twice in this batch. This is a declaration error, not a transaction: entries preceding the duplicate may already be sampled.
Sourcepub fn sample_one(
&mut self,
key: K,
motion: Motion,
now: Duration,
reduced_motion: bool,
) -> Frame
pub fn sample_one( &mut self, key: K, motion: Motion, now: Duration, reduced_motion: bool, ) -> Frame
Samples one key, creating its state on first use. Repeated calls for the
same key are allowed; each declaration retargets the same trajectory.
Uses the same clock and interruption contract as Self::sample.
Sourcepub fn contains_key(&self, key: &K) -> bool
pub fn contains_key(&self, key: &K) -> bool
Whether this key has retained state, including a completed exit.
Sourcepub fn remove(&mut self, key: &K) -> bool
pub fn remove(&mut self, key: &K) -> bool
Immediately cancels and removes a key; returns whether it existed.
Reusing a removed key starts fresh, including its initial declaration.
For animated removal, wait until its sampled frame is no longer mounted.
Hash table capacity is preserved.
Sourcepub fn retain(&mut self, keep: impl FnMut(&K) -> bool)
pub fn retain(&mut self, keep: impl FnMut(&K) -> bool)
Immediately removes keys for which keep returns false, preserving capacity.
This does not wait for exits; keep exiting keys until their final sample.
Iteration order is unspecified; visits the table in O(capacity) time.
Sourcepub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Reserves space for at least additional new keys beyond the current length.
Sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Releases unused table capacity as far as the standard hash table allows. Retained trajectories are unchanged. Do this after cleanup, outside a hot sampling loop; it can allocate and move entries.
Trait Implementations§
Auto Trait Implementations§
impl<K> Freeze for Motions<K>
impl<K> RefUnwindSafe for Motions<K>where
Motions<K>: RefUnwindSafe,
impl<K> Send for Motions<K>
impl<K> Sync for Motions<K>
impl<K> Unpin for Motions<K>
impl<K> UnsafeUnpin for Motions<K>where
Motions<K>: UnsafeUnpin,
impl<K> UnwindSafe for Motions<K>where
Motions<K>: UnwindSafe,
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().