Skip to main content

Crate anyspawn

Crate anyspawn 

Source
Expand description

A generic task spawner compatible with any async runtime.

This crate provides a Spawner type that abstracts task spawning across different async runtimes without generic infection.

§Design Philosophy

  • Concrete type: No generics needed in your code
  • Simple: Use built-in constructors or provide a closure
  • Flexible: Works with any async runtime

§Quick Start

§Using Tokio

use anyspawn::Spawner;

let spawner = Spawner::new_tokio();
let result = spawner.spawn(async { 1 + 1 }).await;
assert_eq!(result, 2);

§Custom Runtime

use anyspawn::Spawner;

let spawner = Spawner::new_custom("threadpool", |fut| {
    std::thread::spawn(move || futures::executor::block_on(fut));
});

// Returns a JoinHandle that can be awaited or dropped
let handle = spawner.spawn(async { 42 });

§Thread-Aware Support

Spawner implements ThreadAware and supports per-core isolation via Spawner::new_thread_aware, enabling contention-free, NUMA-friendly task dispatch. See the thread-aware section on Spawner for details and examples.

§Features

Structs§

CustomSpawnerBuilder
A typestate builder for constructing a Spawner with layered future transformations.
JoinHandle
A handle to a spawned task that can be awaited to retrieve its result.
Spawner
Runtime-agnostic task spawner.

Type Aliases§

BoxedFuture
A type-erased, heap-allocated, pinned future that returns ().