tokio VS async-std

Compare tokio vs async-std and see what are their differences.

tokio

A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ... (by tokio-rs)
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
tokio async-std
223 20
29,088 4,048
1.5% 0.1%
9.5 5.5
5 days ago 4 months ago
Rust Rust
MIT License Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

tokio

Posts with mentions or reviews of tokio. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2025-07-18.
  • Persistent Storage and 97% Faster Cold Starts for Edge Functions
    3 projects | dev.to | 18 Jul 2025
    Previously, Edge Functions with large dependencies or doing preparation work at the start (e.g., parsing/loading configs, initializing AI models) would incur a noticeable boot delay. Sometimes, these slow neighbors can impact other functions running on the same machine. All JavaScript workers in the Supabase Edge Functions Runtime were cooperatively scheduled on the same Tokio thread pool. If one worker had heavy startup logic, such as parsing JavaScript modules or running synchronous operations, it could delay every worker scheduled after. This led to occasional long‑tail latency spikes in high-traffic projects. To address this issue, we moved workers which are still performing initial script evaluation onto a dedicated blocking pool. This approach prevents heavy initialization tasks from blocking the Tokio thread, significantly reducing boot time spikes for other functions.
  • Why doesn't Rust care more about compiler performance?
    8 projects | news.ycombinator.com | 12 Jun 2025
    docs.rs is just barely viable because it only has to build crates once (for one set of features, one target platform etc.).

    What you propose would 1) have to build each create for at least the 8 Tier 1 targets, if not also the 91 Tier 2 targets. That would be either 8 or 99 binaries already.

    Then consider that it's difficult to anticipate which feature combinations a user will need. For example, the tokio crate has 14 features [1]. Any combination of 14 different features gives 2^14 = 16384 possible configurations that would all need to be built. Now to be fair, these feature choices are not completely independent, e.g. the "full" feature selects a bunch of other features. Taking these options out, I'm guessing that we will end up with (ballpark) 5000 reasonable configurations. Multiply that by the number of build targets, and we will need to build either 40000 (Tier 1 only) or 495000 binaries for just this one crate.

    Now consider on top that the interface of dependency crates can change between versions, so the tokio crate would either have to pin exact dependency versions (which would be DLL hell and therefore version locking is not commonly used for Rust libraries) or otherwise we need to build the tokio crate separately for each dependency version change that is ABI-incompatible somewhere. But even without that, storing tens of thousands of compiled variants is very clearly untenable.

    Rust has very clearly chosen the path of "pay only for what you use", which is why all these library features exist in the first place. But because they do, offering prebuilt artifacts is not viable at scale.

    [1] https://github.com/tokio-rs/tokio/blob/master/tokio/Cargo.to...

  • A Journey From JS To Rust
    2 projects | dev.to | 8 Jun 2025
    Currently, the de facto standard async runtime is tokio. Beginners can just use tokio without much thought.
  • Exploring the top Rust web frameworks
    23 projects | dev.to | 3 Jun 2025
    Gotham is a flexible web framework built for stable Rust that promotes “stability, safety, security, and speed.” It provides async support with the help of Tokio and hyper out of the box.
  • Building a simple Kubernetes Controller in Rust - Part 1
    8 projects | dev.to | 4 Mar 2025
    Because of the nature of Kubernetes and its operation being "network operations", kube-rs considers all the operations as "async" operations, and we need a way to manage it. The well-known and mostly used way of doing it is with the tokio framework. Adding tokio, with features of "macros" (to use macros like #[tokio::main]) and a runtime (rt-multi-thread) should be enough. Additionally, we need to return an error to this function, so we will be using anyhow crate, that allows us to return errors without worrying about the error type
  • Why I'm Writing a Scheme Implementation in 2025 (The Answer Is Async Rust)
    6 projects | news.ycombinator.com | 18 Feb 2025
  • The Inevitability of the Borrow Checker
    1 project | news.ycombinator.com | 7 Feb 2025
    The situation in Rust seems to be pretty complicated. But I did find that panicking within a thread you spawn kills just that thread and not the whole program. And it seems that Tokio has the same behavior.

    https://github.com/tokio-rs/tokio/issues/2002

    And web frameworks like Tower provide standard ways of Helen’ handling panics and turning them into error responses.

    https://docs.rs/tower-http/latest/tower_http/catch_panic/ind...

    So I don’t think panics are necessarily meant to be program-killing in Rust, even if Result types are heavily recommended instead.

  • Zig; what I think after months of using it
    6 projects | news.ycombinator.com | 4 Feb 2025
    There's compiler-level traits like `Iterator` and `Future` which enforce references. If wanting to do intrusive pointers into them, one risks creating overlapping references: https://github.com/tokio-rs/tokio/issues/3399
  • Build It Yourself
    7 projects | news.ycombinator.com | 24 Jan 2025
  • Rusty Backends
    9 projects | dev.to | 20 Jan 2025
    Full Tokio compatibility

async-std

Posts with mentions or reviews of async-std. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-03.
  • How to Read Data from PostgreSQL with Diesel in Rust?
    1 project | dev.to | 11 May 2025
    Certainly! Check out the official Diesel documentation and the async-std Rust chapter to familiarize yourself with async Rust programming.
  • Stabilizing async fn in traits in 2023 | Inside Rust Blog
    5 projects | /r/rust | 3 May 2023
    But maybe check out the discussion here https://github.com/async-rs/async-std/pull/631 or something (the blog post was linked on the end of it)
  • Anyone using io_uring?
    8 projects | /r/rust | 18 Aug 2022
    Have a look at these: https://github.com/async-rs/async-std/tree/main/examples
  • Any plans for built-in support of Vec2/Vec3/Vec4 in Rust?
    11 projects | /r/rust | 29 Jul 2022
    In fact, there are a lot of crates in Rust where in other programming languages, it would be included in the standard library. Examples are regex, random number generators, additional iterator methods, macros for other collections, num traits, loggers, HTTP libraries, error handling, async runtimes, serialization and deserialization, date and time, and many more.
  • 18 factors powering the Rust revolution, Part 2 of 3
    13 projects | dev.to | 10 Apr 2022
    Two major projects (non std lib but extremely commonly used) stand out in the area of async programming: Async std and Tokio - no doubt familiar to anyone that has turned an eye towards Rust for a second too long. Async architecture in general is likely very familiar to JavaScript programmers but in Rust there are some extra considerations (like ownership of the data that is thrown into an async function). Tokio is fast becoming a heavily supported and road tested async framework, with a thread scheduling runtime "baked in" that has learned from the history of Go, Erlang, and Java thread schedulers.
  • What are the side-effects of using different runtimes in the same codebase?
    2 projects | /r/rust | 21 Feb 2022
    Ah... https://github.com/tokio-rs/tokio and https://github.com/async-rs/async-std ?
  • Hey Rustaceans! Got an easy question? Ask here (51/2021)!
    7 projects | /r/rust | 21 Dec 2021
    async-std: Basically a Tokio alternative with a few different design decisions.
  • Why asynchronous Rust doesn't work
    3 projects | /r/programming | 13 Nov 2021
    Go's solution is for the scheduler to notice after a while when a goroutine has blocked execution and to shift goroutines waiting their turn to another thread. async-std pondered a similar approach with tasks, but it proved controversial and was never merged.
  • Building static Rust binaries for Linux
    6 projects | dev.to | 17 Oct 2021
    This indicates curl, zlib, openssl, and libnghttp2 as well as a bunch of WASM-related things are being dynamically linked into my executable. To resolve this, I looked at the build features exposed by surf and found that it selects the "curl_client" feature by default, which can be turned off and replaced with "h1-client-rustls" which uses an HTTP client backed by rustls and async-std and no dynamically linked libraries. Enabling this build feature removed all -sys dependencies from androidx-release-watcher, allowing me to build static executables of it.
  • Rust async is colored, and that’s not a big deal
    4 projects | /r/rust | 14 Mar 2021
    And also, the actual PR never got merged.

What are some alternatives?

When comparing tokio and async-std you can also consider the following projects:

smol - A small and fast async runtime for Rust

futures-rs - Zero-cost asynchronous programming in Rust

iced - A cross-platform GUI library for Rust, inspired by Elm

reqwest - An easy and powerful Rust HTTP Client

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured