Struct hotshot_task::task::Task

source ·
pub struct Task<S: TaskState> {
    state: S,
    sender: Sender<Arc<S::Event>>,
    receiver: Receiver<Arc<S::Event>>,
}
Expand description

A basic task which loops waiting for events to come from event_receiver and then handles them using its state It sends events to other Tasks through sender This should be used as the primary building block for long running or medium running tasks (i.e. anything that can’t be described as a dependency task)

Fields§

§state: S

The state of the task. It is fed events from receiver and mutated via handle_event.

§sender: Sender<Arc<S::Event>>

Sends events all tasks including itself

§receiver: Receiver<Arc<S::Event>>

Receives events that are broadcast from any task, including itself

Implementations§

source§

impl<S: TaskState + Send + 'static> Task<S>

source

pub fn new( state: S, sender: Sender<Arc<S::Event>>, receiver: Receiver<Arc<S::Event>>, ) -> Self

Create a new task

source

fn boxed_state(self) -> Box<dyn TaskState<Event = S::Event>>

The state of the task, as a boxed dynamic trait object.

source

pub fn run(self) -> JoinHandle<Box<dyn TaskState<Event = S::Event>>>

Spawn the task loop, consuming self. Will continue until the task reaches some shutdown condition

Auto Trait Implementations§

§

impl<S> Freeze for Task<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for Task<S>
where S: RefUnwindSafe,

§

impl<S> Send for Task<S>

§

impl<S> Sync for Task<S>
where S: Sync,

§

impl<S> Unpin for Task<S>
where S: Unpin,

§

impl<S> UnwindSafe for Task<S>
where S: 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, 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