Kind

Enum Kind 

Source
pub enum Kind {
    Asynchronous {
        messages_per_update: u32,
    },
    Isochronous {
        tick_ms: u32,
        ticks_per_update: u32,
    },
    Mesochronous {
        tick_ms: u32,
        ticks_per_update: u32,
    },
    Anisochronous,
}
Expand description

Specifies the loop behavior of a process.

  • Asynchronous is a loop that blocks waiting on exactly one channel endpoint.
  • Isochronous is a fixed-timestep loop in which endpoints are polled once per ‘tick’ and will attempt to “catch up” if it falls behind.
  • Mesochronous is a rate-limited loop that polls processes and loops immediately if enough time has passed and otherwise sleeps for the remaining duration until the next ‘tick’.
  • Anisochronous is an un-timed polling loop which always loops immediately and always processes one update per tick.

Variants§

§

Asynchronous

Block waiting on one or more endpoints.

Asynchronous processes can only hold multiple endpoints of compatible kinds of channels. Currently this is either any number of sink endpoints, or else any number and combination of simplex or source endpoints. This is validated internally when defining an Def struct with the provided kind and endpoints.

Fields

§messages_per_update: u32
§

Isochronous

A fixed-time step polling loop that will try to “catch up” if it falls behind.

Fields

§tick_ms: u32
§ticks_per_update: u32
§

Mesochronous

A rate-limited polling loop.

Fields

§tick_ms: u32
§ticks_per_update: u32
§

Anisochronous

Poll to exhaustion and update immediately.

This is useful for blocking update functions as in a readline loop or a rendering loop.

Note that unlike other polling process kinds (Isochronous and Mesochronous), ticks and updates are always one-to-one since an external blocking mechanism is expected to be used in the update function.

Implementations§

Source§

impl Kind

Source

pub fn asynchronous_default() -> Self

Source

pub fn isochronous_default() -> Self

Source

pub fn mesochronous_default() -> Self

Source

pub const fn anisochronous_default() -> Self

Source

pub fn new_asynchronous( messages_per_update: u32, ) -> Result<Self, Vec<KindError>>

Source

pub fn new_isochronous( tick_ms: u32, ticks_per_update: u32, ) -> Result<Self, Vec<KindError>>

Source

pub fn new_mesochronous( tick_ms: u32, ticks_per_update: u32, ) -> Result<Self, Vec<KindError>>

Source

pub const fn new_anisochronous() -> Self

Trait Implementations§

Source§

impl Clone for Kind

Source§

fn clone(&self) -> Kind

Returns a duplicate 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 Debug for Kind

Source§

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

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

impl PartialEq for Kind

Source§

fn eq(&self, other: &Kind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Kind

Source§

impl StructuralPartialEq for Kind

Auto Trait Implementations§

§

impl Freeze for Kind

§

impl RefUnwindSafe for Kind

§

impl Send for Kind

§

impl Sync for Kind

§

impl Unpin for Kind

§

impl UnwindSafe for Kind

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<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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.