Skip to main content

Crate async_rs

Crate async_rs 

Source
Expand description

A Rust async runtime abstraction library.

Provides a unified Runtime enum and a set of traits (Executor, Reactor, Dns, …) that abstract over Tokio, smol, and async-global-executor. Applications select exactly one runtime via feature flags; library crates depend on the trait objects and remain runtime-agnostic.

§Feature flags

FlagNotes
tokio (default)Tokio runtime
smolsmol executor
async-global-executorasync-global-executor
async-ioasync-io reactor (required by smol)
hickory-dnsHickory DNS resolver (tokio only)

§Example

use async_rs::{Runtime, TokioRuntime, traits::*};
use std::{io, time::Duration};

async fn get_a(rt: &TokioRuntime) -> io::Result<u32> {
    rt.spawn_blocking(|| Ok(12)).await
}

async fn get_b(rt: &TokioRuntime) -> io::Result<u32> {
    rt.spawn(async { Ok(30) }).await
}

async fn tokio_main(rt: &TokioRuntime) -> io::Result<()> {
    let a = get_a(rt).await?;
    let b = get_b(rt).await?;
    rt.sleep(Duration::from_millis(500)).await;
    assert_eq!(a + b, 42);
    Ok(())
}

fn main() -> io::Result<()> {
    let rt = Runtime::tokio()?;
    rt.block_on(tokio_main(&rt))
}

Modules§

traits
A collection of traits to define a common interface across async runtimes
util
A collection of utilities to deal with IO, futures and runtimes

Structs§

AsyncGlobalExecutor
Dummy object implementing executor common interfaces on top of async-global-executor
AsyncIO
Dummy object implementing reactor common interfaces on top of async-io
HickoryToSocketAddrs
Perform async DNS resolution using hickory-dns
Noop
Dummy object implementing async common interfaces on top of noop
Runtime
A full-featured Runtime implementation
Smol
Dummy object implementing async common interfaces on top of smol
Tokio
Dummy object implementing async common interfaces on top of tokio

Type Aliases§

AGERuntime
Type alias for the async-global-executor runtime
NoopRuntime
Type alias for the noop runtime
SmolRuntime
Type alias for the smol runtime
TokioRuntime
Type alias for the tokio runtime