Skip to main content

TrackedTaskGroup

Struct TrackedTaskGroup 

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

A group of spawned tasks whose lifecycle is tracked.

When finalize is called, the group joins each handle with the configured grace period and reports any tasks still running as leaks.

§Example

use dev_async::tasks::TrackedTaskGroup;
use std::time::Duration;

let mut group = TrackedTaskGroup::new("workers");
group.spawn(async { tokio::time::sleep(Duration::from_millis(5)).await; });
group.spawn(async { tokio::time::sleep(Duration::from_millis(5)).await; });

let check = group.finalize(Duration::from_millis(50)).await;
assert!(check.has_tag("async"));

Implementations§

Source§

impl TrackedTaskGroup

Source

pub fn new(name: impl Into<String>) -> Self

Create a new group with a stable name.

Source

pub fn spawn<F>(&mut self, fut: F)
where F: Future<Output = ()> + Send + 'static,

Spawn a future and track its handle.

The future MUST resolve to (). If you need a result, capture it via shared state (e.g. tokio::sync::oneshot::Sender).

Source

pub fn spawned_count(&self) -> usize

How many tasks have been spawned through this group so far.

Source

pub async fn finalize(self, grace: Duration) -> CheckResult

Join all tracked tasks with a per-task grace period and emit a CheckResult.

Verdicts:

  • All tasks completed cleanly -> Pass.
  • One or more tasks panicked -> Fail (Critical) with task_panicked tag.
  • One or more tasks did not finish in time (leak suspected) -> Fail (Error) with task_leak tag.

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