rskit-worker 0.2.0-alpha.3

Task worker pool with JoinSet, typed events, and provider bridges
Documentation

rskit-worker — Bounded Async Worker Pool

JoinSet + Semaphore worker pool with typed event streaming, panic detection, and graceful drain.

CI crates.io docs.rs License: MIT MSRV: 1.91

Features

  • Handler<I,O> trait for implementing task logic
  • Event<O> with progress / partial / log / result / error kinds
  • TaskHandle for result retrieval, event subscription, and cancellation
  • mpsc → broadcast relay (no T: Sync required)
  • Panic detection and graceful pool drain

Usage

[dependencies]
rskit-worker = "0.2.0-alpha.3"
async-trait = "0.1"
use rskit_worker::{Handler, Pool, PoolConfig, Event};

struct UpperHandler;

#[async_trait::async_trait]
impl Handler<String, String> for UpperHandler {
    async fn handle(&self, input: String,
        _emit: tokio::sync::mpsc::Sender<Event<String>>,
        _cancel: tokio_util::sync::CancellationToken,
    ) -> rskit_errors::AppResult<String> {
        Ok(input.to_uppercase())
    }
}

let pool = Pool::new(Arc::new(UpperHandler), PoolConfig::new("demo"));
let handle = pool.submit("hello".to_string()).await?;
assert_eq!(handle.result().await?, "HELLO");

See Also

Main repository README