Skip to main content

ReadOutcome

Enum ReadOutcome 

Source
pub enum ReadOutcome<T> {
    Value(T),
    Scheduled(EventListener),
    InProgress(EventListener),
}
Expand description

What a read of a task’s output or cell found.

The two “not available yet” cases are distinguished because the reader can act on them differently: a task that is only scheduled can be taken over and executed by the reader, while one that some worker is already executing can only be waited for — and finding that out without taking the scheduler’s queue lock is the point of telling them apart.

The state is a hint: it is a snapshot, and a task can be picked up by a worker right after the read looked (a worker even pops a task off the queue before it marks it as started). Acting on a stale hint costs at most a failed claim, never correctness.

Variants§

§

Value(T)

The value is available.

§

Scheduled(EventListener)

The task is queued but no worker has started it, so the reader may take it out of the queue and execute it itself. The listener fires when the task is done.

§

InProgress(EventListener)

A worker is already executing the task; there is nothing to take over. The listener fires when the task is done.

Auto Trait Implementations§

§

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

§

impl<T> RefUnwindSafe for ReadOutcome<T>
where T: RefUnwindSafe,

§

impl<T> Send for ReadOutcome<T>
where T: Send,

§

impl<T> Sync for ReadOutcome<T>
where T: Sync,

§

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

§

impl<T> UnsafeUnpin for ReadOutcome<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for ReadOutcome<T>
where T: UnwindSafe,

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> MaybeTypeTag for T

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

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