Skip to main content

Motions

Struct Motions 

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

Source

pub fn new() -> Self

Creates an empty collection without allocating.

Source

pub fn with_capacity(capacity: usize) -> Self

Reserves space for at least capacity keys, without creating trajectories.

Source§

impl<K: Eq + Hash> Motions<K>

Source

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.

Source

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.

Source

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.

Source

pub fn sample_one( &mut self, key: K, motion: Motion, now: Duration, reduced_motion: bool, ) -> Frame

Samples one key at explicit elapsed time, returning a Kit-ready frame.

Methods from Deref<Target = Motions<K>>§

Source

pub fn len(&self) -> usize

Number of retained keys, including settled or absent objects.

Source

pub fn is_empty(&self) -> bool

Whether no keys are retained.

Source

pub fn capacity(&self) -> usize

Number of keys that fit before the hash table must grow.

Source

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.

Source

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.

Source

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.

Source

pub fn contains_key(&self, key: &K) -> bool

Whether this key has retained state, including a completed exit.

Source

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.

Source

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.

Source

pub fn reserve(&mut self, additional: usize)

Reserves space for at least additional new keys beyond the current length.

Source

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§

Source§

impl<K: Debug> Debug for Motions<K>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<K> Default for Motions<K>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<K> Deref for Motions<K>

Source§

type Target = Motions<K>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<K> DerefMut for Motions<K>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

§

impl<K> Freeze for Motions<K>
where Motions<K>: Freeze,

§

impl<K> RefUnwindSafe for Motions<K>

§

impl<K> Send for Motions<K>
where Motions<K>: Send,

§

impl<K> Sync for Motions<K>
where Motions<K>: Sync,

§

impl<K> Unpin for Motions<K>
where Motions<K>: Unpin,

§

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> 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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

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

Convert 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)

Convert &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)

Convert &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> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
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<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

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