Skip to main content

Wait

Struct Wait 

Source
pub struct Wait { /* private fields */ }
Expand description

Describes when Dex may invoke a Step’s execute handler.

Build waits from durable timer and Channel Condition values. Combinators consume their inputs and preserve order, which determines timer indexes used by crate::TimerId.

§Examples

use dex_sdk::{Channel, Timer, Wait};
use std::time::Duration;

let approvals = Channel::<String>::new("approvals");
let wait = Wait::any_of([
    approvals.for_one(),
    Timer::by_duration(Duration::from_secs(300)),
]);

Implementations§

Source§

impl Wait

Source

pub fn skip_immediately() -> Self

Skips wait_for and asks Dex to invoke execute immediately.

Source

pub fn until(condition: Condition) -> Self

Waits until one condition is satisfied. The Condition does not need an ID.

Source

pub fn all_of(conditions: impl IntoIterator<Item = Condition>) -> Self

Waits until every condition is satisfied. Conditions do not need IDs.

Source

pub fn any_of(conditions: impl IntoIterator<Item = Condition>) -> Self

Waits until at least one condition is satisfied. Conditions do not need IDs.

Among ready conditions, Dex selects the first in canonical order: Timers, Channels, then SubFlows, preserving iterator order within each kind. An unready condition does not block a later ready condition. To wait for strict priority, return only the higher-priority condition.

Channel consumption is not greedy across alternatives. Only the selected Channel condition consumes messages; other ready Channel conditions consume nothing.

Source

pub fn any_combination_of( combinations: impl IntoIterator<Item = ConditionCombination>, ) -> Self

Waits for every Condition in any combination.

Channel consumption is limited to Channel conditions in the selected combination. Conditions belonging only to other ready combinations consume nothing.

Every Condition needs a non-empty user ID. Clones of the same Condition may be reused across combinations; distinct Conditions need unique IDs.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Wait

§

impl !UnwindSafe for Wait

§

impl Forget for Wait

§

impl Freeze for Wait

§

impl Send for Wait

§

impl Sync for Wait

§

impl Unpin for Wait

§

impl UnsafeUnpin for Wait

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

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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> 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