whatisgithub

What is futures-rs?

rust-lang/futures-rs — explained in plain English

Analysis updated 2026-06-26

5,857RustAudience · developerComplexity · 4/5LicenseSetup · moderate

In one sentence

Official Rust library providing core async programming abstractions including Stream, join!, and select! macros. Zero-cost, no_std compatible, and the foundation most Rust async code is built on.

Mindmap

mindmap
  root((futures-rs))
    Core Abstractions
      Future trait
      Stream trait
      Sink trait
    Macros
      join!
      select!
      pin_mut!
    Combinators
      map and filter
      chain and merge
      buffer and flatten
    Environments
      std Rust
      no std embedded
    Setup
      Cargo dependency
      Rust 1.71 min
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Building async Rust applications that need to wait on multiple concurrent operations like network requests or file I/O without blocking.

USE CASE 2

Writing embedded or no_std Rust code that requires async abstractions without a full operating system.

USE CASE 3

Composing and transforming streams of asynchronous values using combinator chains instead of nested callbacks.

USE CASE 4

Learning or teaching Rust async fundamentals using the official language-project abstractions.

What is it built with?

Rustasync/awaitno_stdCargo

How does it compare?

rust-lang/futures-rsbyron/dua-clialexpasmantier/television
Stars5,8575,8465,872
LanguageRustRustRust
Setup difficultymoderateeasyeasy
Complexity4/51/51/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Add `futures = "0.3"` to Cargo.toml. Requires Rust 1.71+. For no_std use, disable default features and enable only what you need.

Dual-licensed under MIT and Apache 2.0. You can use it freely in open-source or commercial projects with minimal restrictions.

So what is it?

futures-rs is an official Rust library that provides building blocks for writing asynchronous code. Asynchronous programming lets a program do other work while waiting for slow operations, like network requests or file reads, rather than sitting idle. This library is part of the Rust programming language project itself and defines the core abstractions that make that pattern possible in Rust. The library includes key pieces like Stream, which is a sequence of values produced over time, and utility macros like join! and select! that let you wait on multiple asynchronous operations at once in a readable way. It also provides a collection of combinator methods that let you chain and transform asynchronous operations without deeply nested callbacks. One of the stated goals is zero cost: the abstractions in the library are designed so that using them does not add runtime overhead compared to writing the equivalent low-level code by hand. The library can also run in environments without an operating system, such as embedded hardware, by disabling its standard library features. To use it, you add a single line to your Rust project's dependency file and specify version 0.3. The library requires Rust version 1.71 or newer. The README is short and points to the documentation at docs.rs/futures and the project website for more detail.

Copy-paste prompts

Prompt 1
I'm using the futures-rs crate in Rust. Show me how to use the select! macro to race two async operations and handle whichever finishes first.
Prompt 2
Using futures-rs, write an example that creates a Stream from a Vec and uses combinators to filter and map the values asynchronously.
Prompt 3
I want to run three futures concurrently in Rust using futures-rs join! macro. Show me a complete working example with error handling.
Prompt 4
Explain how to use futures-rs in a no_std embedded Rust project. What features do I need to disable and what still works?
Prompt 5
Show me how to implement a simple async producer-consumer pattern in Rust using futures-rs channels and Stream.

Frequently asked questions

What is futures-rs?

Official Rust library providing core async programming abstractions including Stream, join!, and select! macros. Zero-cost, no_std compatible, and the foundation most Rust async code is built on.

What language is futures-rs written in?

Mainly Rust. The stack also includes Rust, async/await, no_std.

What license does futures-rs use?

Dual-licensed under MIT and Apache 2.0. You can use it freely in open-source or commercial projects with minimal restrictions.

How hard is futures-rs to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is futures-rs for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.