Skip to main content

HandlerOutput

Enum HandlerOutput 

Source
pub enum HandlerOutput {
    Success {
        output: Option<Vec<u8>>,
        consumption: Vec<BudgetConsumption>,
    },
    RetryableFailure {
        error: String,
        consumption: Vec<BudgetConsumption>,
    },
    TerminalFailure {
        error: String,
        consumption: Vec<BudgetConsumption>,
    },
    Suspended {
        output: Option<Vec<u8>>,
        consumption: Vec<BudgetConsumption>,
    },
}
Expand description

Outcome of an attempt execution.

The handler return type uses typed variants to distinguish between successful completion, retryable failures (transient errors that may succeed on retry), and terminal failures (permanent errors that should not be retried). Handlers may also return Suspended to signal that execution was voluntarily preempted (e.g. in response to budget exhaustion).

All variants carry a consumption list: zero or more BudgetConsumption records reporting the resources consumed during this attempt. The dispatch loop durably records these after each attempt completes.

Variants§

§

Success

Execution completed successfully.

Fields

§output: Option<Vec<u8>>

Optional output data produced by the execution.

§consumption: Vec<BudgetConsumption>

Resource consumption incurred during this attempt.

§

RetryableFailure

Execution failed but may succeed on retry (transient failure).

Fields

§error: String

Error message describing the failure cause.

§consumption: Vec<BudgetConsumption>

Resource consumption incurred before the failure.

§

TerminalFailure

Execution failed permanently and should not be retried.

Fields

§error: String

Error message describing the failure cause.

§consumption: Vec<BudgetConsumption>

Resource consumption incurred before the failure.

§

Suspended

Execution was voluntarily suspended (e.g. budget exhaustion signalled via the cancellation token). The run transitions to Suspended and does not count this attempt toward the max_attempts retry cap.

Fields

§output: Option<Vec<u8>>

Optional partial-state bytes the handler may persist for use on resume.

§consumption: Vec<BudgetConsumption>

Resource consumption incurred before suspension.

Implementations§

Source§

impl HandlerOutput

Source

pub fn success() -> Self

Creates a success output with no output bytes and no consumption.

Source

pub fn success_with_output(output: Vec<u8>) -> Self

Creates a success output with output bytes and no consumption.

Source

pub fn retryable_failure(error: impl Into<String>) -> Self

Creates a retryable failure with no consumption.

Source

pub fn terminal_failure(error: impl Into<String>) -> Self

Creates a terminal failure with no consumption.

Source

pub fn suspended() -> Self

Creates a suspended outcome with no partial state and no consumption.

Source

pub fn suspended_with_output( output: Vec<u8>, consumption: Vec<BudgetConsumption>, ) -> Self

Creates a suspended outcome with partial-state bytes and consumption.

Source

pub fn consumption(&self) -> &[BudgetConsumption]

Returns the resource consumption reported by this handler output.

Trait Implementations§

Source§

impl Clone for HandlerOutput

Source§

fn clone(&self) -> HandlerOutput

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 HandlerOutput

Source§

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

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

impl PartialEq for HandlerOutput

Source§

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

Source§

impl StructuralPartialEq for HandlerOutput

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.