3 stable releases

1.2.1 Jul 10, 2024
1.2.0 Jun 3, 2024
1.1.0 Apr 2, 2024

#2047 in Asynchronous

Download history 55/week @ 2025-04-06 171/week @ 2025-04-13 242/week @ 2025-04-20 31/week @ 2025-04-27 100/week @ 2025-05-04 60/week @ 2025-05-11 11/week @ 2025-05-18 7/week @ 2025-05-25 15/week @ 2025-06-08 6/week @ 2025-06-15 14/week @ 2025-06-22 81/week @ 2025-06-29 57/week @ 2025-07-06 137/week @ 2025-07-13 428/week @ 2025-07-20

703 downloads per month
Used in 2 crates

MIT license

67KB
1K SLoC

Async compatibility layer meant to control abstractions between tokio and async_std with a feature flag toggle while exposing the same interface for general consumption between both


What is this?

This crate exports four things:

  • A compatibility/abstraction layer for writing async-executor agnostic code. We support two async executors: async-std and tokio. Each may be toggled with a configuration flag.
  • A compatibility/abstraction layer for writing async channel agnostic code. We support three async channel implementations: async-std, tokio and flume. Each may be toggled with a configuration flag.
  • A library exporting a bunch of useful async primitives.
  • A tracing configuration layer optionally supporting console and opentelemetry integration.

Example usage

By default the async-std executor and channels are used.

To use tokio:

RUSTFLAGS='--cfg async_executor_impl="tokio" --cfg async_channel_impl="tokio"' cargo build

async_executor_impl may be either tokio or async-std. async_channel_impl may be either tokio, async-std, or flume.

Note that using tokio channels requires tokio to be the runtime.

Dependencies

~6–21MB
~292K SLoC