Crate async_rs

Crate async_rs 

Source
Expand description

A Rust async runtime abstration library.

§Features

  • tokio: enable the tokio implementation (default)
  • smol: enable the smol implementation
  • async-global-executor: enable the async-global-executor implementation
  • async-io: enable the async-io reactor implementation

§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
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
SmolRuntime
Type alias for the smol runtime
TokioRuntime
Type alias for the tokio runtime