Skip to main content

DispatchStrategy

Enum DispatchStrategy 

Source
#[repr(u8)]
pub enum DispatchStrategy { Inline = 0, Deferred = 1, FromIsr = 2, }
Expand description

How a Node expects its callbacks to fire.

Variants§

§

Inline = 0

Callbacks fire from the executor’s spin loop (current default). Served by every runtime: POSIX, RTOS (FreeRTOS/NuttX/Zephyr/ ThreadX), bare-metal, RTIC (proxied via __nros_dispatch task when the board demands it), Embassy (likewise). The default for every existing Node pkg — preserves backward compat.

§

Deferred = 1

Callbacks fire from a framework-owned task (RTIC dispatcher / Embassy task). The board-side NodeDispatchRuntime enqueues signaled callbacks; the framework’s scheduler dequeues + drives ExecutableNode::on_callback from its own task context. Needed for Nodes whose callbacks must not run from the spin task (e.g. callbacks that take RTIC locks or share priority with custom tasks).

§

FromIsr = 2

Callbacks fire directly from an ISR handler. Design slot only — impl deferred to Phase 216.E.1. Requires a reentrancy audit of the dispatch path + a lock-free SPSC variant tolerant of ISR-priority producers + a per-Node #[isr_safe] proof contract. Reserved here so the matrix in Phase 216.D.1 has a stable discriminant to reject against.

Implementations§

Source§

impl DispatchStrategy

Source

pub const DEFAULT: DispatchStrategy = Self::Inline

Compile-time default for Node::DISPATCH. Inline preserves every existing Node pkg unchanged.

Source

pub const fn to_u8(self) -> u8

FFI round-trip discriminant. Mirrors as u8 but expressible in const contexts where as casts on enums currently require an #[allow(non_upper_case_globals)] dance.

Source

pub const fn from_u8(value: u8) -> Option<DispatchStrategy>

Inverse of to_u8. Returns None for unknown discriminants — nros check surfaces the rejection with a clear diagnostic rather than silently treating a future strategy as Inline.

Trait Implementations§

Source§

impl Clone for DispatchStrategy

Source§

fn clone(&self) -> DispatchStrategy

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 DispatchStrategy

Source§

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

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

impl Hash for DispatchStrategy

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for DispatchStrategy

Source§

fn eq(&self, other: &DispatchStrategy) -> 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 Copy for DispatchStrategy

Source§

impl Eq for DispatchStrategy

Source§

impl StructuralPartialEq for DispatchStrategy

Auto Trait Implementations§

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