TaskGroup

Struct TaskGroup 

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

Group of tasks to be waited on.

Implementations§

Source§

impl TaskGroup

Source

pub fn new() -> Self

Creates new task group

Source

pub fn add(&self)

Increases the task counter by 1.

This is used to indicate an intention for an upcoming task. Call to this function should be matched by call to Self::done. If the call to done() needs to be done in a RAII manner use Self::add_work

Source

pub fn add_n(&self, n: u32)

Increases the task counter by n.

This is used to indicate an intention for an upcoming task. Call to this function should be matched by call to Self::done. If the call to done() needs to be done in a RAII manner use Self::add_work

Source

pub fn add_work(&self, n: u32) -> Work

Creates a work which does increment the task counter by n. The returned Work decrements the counter when dropped.

Source

pub fn done(&self)

Decrements the task counter by 1.

Source

pub fn done_n(&self, n: u32)

Decrements the task counter by n

Source

pub fn wait(&self) -> WaitFuture

Returns the WaitFuture When awaited the future returns the internal counter, which can be 0 or -ve. A value can be -ve if there were more TaskGroup::done calls than TaskGroup::add. The caller can use this to maintain an invariant in case of any mis-behaving tasks.

The future when resolved also resets the internal counter to zero. The taskgroup then can be reused.

use taskwait::TaskGroup;
 
#[tokio::main]
async fn main() {
    let tg = TaskGroup::new();
     
    // ... Spawn tasks ...

    let n = tg.wait().await;
    if n < 0 {
        // Return Error
    }
}

Trait Implementations§

Source§

impl Clone for TaskGroup

Source§

fn clone(&self) -> TaskGroup

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for TaskGroup

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.