pub struct EventDependency<T: Clone + Send + Sync> {
    pub(crate) event_rx: Receiver<T>,
    pub(crate) match_fn: Box<dyn Fn(&T) -> bool + Send>,
    completed_dependency: Option<T>,
}
Expand description

A dependency that listens on a channel for an event that matches what some value it wants.

Fields§

§event_rx: Receiver<T>

Channel of incoming events

§match_fn: Box<dyn Fn(&T) -> bool + Send>

Closure which returns true if the incoming T is the thing that completes this dependency

§completed_dependency: Option<T>

The potentially externally completed dependency. If the dependency was seeded from an event message, we can mark it as already done in lieu of other events still pending.

Implementations§

source§

impl<T: Clone + Send + Sync + 'static> EventDependency<T>

source

pub fn new( receiver: Receiver<T>, match_fn: Box<dyn Fn(&T) -> bool + Send> ) -> Self

Create a new EventDependency

source

pub fn mark_as_completed(&mut self, dependency: T)

Mark a dependency as completed.

Trait Implementations§

source§

impl<T: Clone + Send + Sync + 'static> Dependency<T> for EventDependency<T>

source§

async fn completed(self) -> Option<T>

Complete will wait until it gets some value T then return the value
source§

fn or<D: Dependency<T> + Send + 'static>(self, dep: D) -> OrDependency<T>
where T: Send + Sync + Clone + 'static, Self: Sized + Send + 'static,

Create an or dependency from this dependency and another
source§

fn and<D: Dependency<T> + Send + 'static>(self, dep: D) -> AndDependency<T>
where T: Send + Sync + Clone + 'static, Self: Sized + Send + 'static,

Create an and dependency from this dependency and another

Auto Trait Implementations§

§

impl<T> Freeze for EventDependency<T>
where T: Freeze,

§

impl<T> !RefUnwindSafe for EventDependency<T>

§

impl<T> Send for EventDependency<T>

§

impl<T> !Sync for EventDependency<T>

§

impl<T> Unpin for EventDependency<T>
where T: Unpin,

§

impl<T> !UnwindSafe for EventDependency<T>

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more