Rust Futures and Async IO


futures-rs is a library that implements zero-cost futures and streams in Rust.

The core concepts of the futures crate are Future and Stream.

Creating a future with oneshot function

There are some general Future trait implementations in the futures crate. One of them is implemented in futures::sync::oneshot module and is available through futures::oneshot function:

extern crate futures;

use std::thread;
use futures::Future;

fn expensive_computation() -> u32 {
    // ...

fn main() {
    // The oneshot function returns a tuple of a Sender and a Receiver.
    let (tx, rx) = futures::oneshot();

    thread::spawn(move || {
        // The complete method resolves a values.

    // The map method applies a function to a value, when it is resolved.
    let rx =|x| {
        println!("{}", x);

    // The wait method blocks current thread until the value is resolved.