Skip to main content

KernelOp

Enum KernelOp 

Source
pub enum KernelOp {
    RouteOne {
        dst: ActorId,
    },
    WorkflowTick {
        wid: WorkflowId,
    },
    TimeTick,
    UnblockSend {
        dst: ActorId,
    },
    ThreadSwitch {
        from: ThreadId,
        to: ThreadId,
    },
}
Expand description

Kernel-internal operations (no external trigger)

Corresponds to Lean: inductive KernelOp

Variants§

§

RouteOne

Deliver one message to actor

Corresponds to Lean: | route_one (dst : ActorId)

Fields

§dst: ActorId

Destination actor to receive the message

§

WorkflowTick

Advance workflow

Corresponds to Lean: | workflow_tick (w : WorkflowId)

Fields

§wid: WorkflowId

Workflow to advance

§

TimeTick

Increment global time

Corresponds to Lean: | time_tick

§

UnblockSend

Unblock actor waiting to send

Corresponds to Lean: | unblock_send (dst : ActorId)

Fields

§dst: ActorId

Destination actor to unblock

§

ThreadSwitch

Context switch between threads

Corresponds to Lean: | thread_switch (from_ to_ : ThreadId)

Fields

§from: ThreadId

Thread to switch from

§to: ThreadId

Thread to switch to

Implementations§

Source§

impl KernelOp

Source

pub fn execute(&self, state: &State) -> Result<State, StepError>

Execute the kernel operation

Corresponds to Lean: def KernelExecInternal

Each operation modifies only its designated state component:

  • route_one: moves message from pending to mailbox
  • time_tick: increments global time
  • workflow_tick: advances workflow state
  • unblock_send: clears blockedOn for actor
§Errors

Returns StepError::ActorNotFound if the destination actor does not exist (RouteOne, UnblockSend). Returns StepError::KernelOpFailed if the actor has no pending messages or its mailbox is full (RouteOne). Returns StepError::KernelOpFailed if the workflow is not found or is not running (WorkflowTick).

Source

pub fn execute_mut(&self, state: &mut State) -> Result<(), StepError>

Execute the kernel operation (mutating version).

Same validation as execute but modifies &mut State in place.

Trait Implementations§

Source§

impl Clone for KernelOp

Source§

fn clone(&self) -> KernelOp

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for KernelOp

Source§

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

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

impl PartialEq for KernelOp

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 KernelOp

Source§

impl StructuralPartialEq for KernelOp

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

Source§

type Output = T

Should always be Self
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.