Task

Struct Task 

Source
pub struct Task;
Expand description

A task is a lightweight thread of execution designed to run one particular action.

Tasks can not receive messages from other processes, only send.

Calls that are allowed:

  • Process::send
  • GenServer::cast

Calls that would panic:

  • Process::link
  • Process::monitor
  • GenServer::call

You can however return a value in a task and await it to receive the value.

It’s not recommended to await long running tasks in a GenServer since it will delay processing of other messages. Instead, you should send a cast with the result of your task and handle it in handle_cast.

Implementations§

Source§

impl Task

Source

pub fn spawn<F>(task: F) -> TaskHandle<F::Output>
where F: Future + Send + 'static, F::Output: Send + 'static,

Runs the provided asynchronous task.

Source

pub fn spawn_blocking<F, R>(task: F) -> TaskHandle<R>
where F: FnOnce() -> R + Send + 'static, R: Send + 'static,

Runs the provided synchronous task on a thread where blocking is acceptable.

Source

pub async fn shutdown<R>(task: TaskHandle<R>) -> Result<R, TaskError>

Shuts down the task, and then checks for a result.

Returns the result if the task finishes while shutting down, TaskError if the task died before returning.

Source

pub async fn await_many<R, const N: usize>( tasks: [TaskHandle<R>; N], ) -> Result<Vec<R>, TaskError>
where R: 'static,

Await many tasks at once and returns their results in order, or returns the first error that occurs.

Auto Trait Implementations§

§

impl Freeze for Task

§

impl RefUnwindSafe for Task

§

impl Send for Task

§

impl Sync for Task

§

impl Unpin for Task

§

impl UnwindSafe for Task

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