enough-tokio 0.2.0

Tokio integration for the enough cancellation trait
Documentation

enough-tokio

Tokio integration for the [enough] cancellation trait.

This crate provides adapters between tokio's cancellation primitives and the [Stop] trait.

Wrapping Tokio's CancellationToken

use enough_tokio::TokioStop;
use enough::Stop;
use tokio_util::sync::CancellationToken;

let token = CancellationToken::new();
let stop = TokioStop::new(token.clone());

// Use in blocking context
tokio::task::spawn_blocking(move || {
    for i in 0..1000 {
        stop.check()?;
        // do work...
    }
    Ok(())
});

// Cancel from async context
token.cancel();

Async Waiting

use enough_tokio::TokioStop;

let stop = TokioStop::new(token);

// Wait for cancellation in async code
stop.cancelled().await;