You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Anthony Dodd f57e3142a1 Small technical correction. (#64)
Absolutely awesome work here! Just reading through the book absorbing all of the awesomeness and noticed this little bit. Let me know if you would like for me to update the corrections in any way.
5 years ago
benches Initial commit 5 years ago
docs Small technical correction. (#64) 5 years ago
examples Remove surf example 5 years ago
src Fix documention links to docs.rs 5 years ago
tests Formatting 5 years ago
.gitignore Initial commit 5 years ago
.travis.yml Reenable windows builds (#49) 5 years ago
CHANGELOG.md Fix failing docs 5 years ago
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 5 years ago
Cargo.toml Add readme section to Cargo.toml (#47) 5 years ago
LICENSE-APACHE Initial commit 5 years ago
LICENSE-MIT Initial commit 5 years ago
README.md Prepare for v0.99.0 5 years ago
rustfmt.toml Add rustfmt config 5 years ago

README.md

Async version of Rust's standard library

Build Status License Cargo Documentation chat

This crate provides an async version of std. It provides all the interfaces you are used to, but in an async version and ready for Rust's async/await syntax.

Documentation

async-std comes with extensive API documentation and a book.

Quickstart

Add the following lines to you Cargo.toml:

[dependencies]
async-std = "0.99"

Or use cargo add if you have it installed:

$ cargo add async-std

Hello world

#![feature(async_await)]

use async_std::task;

fn main() {
    task::block_on(async {
        println!("Hello, world!");
    })
}

Low-Friction Sockets with Built-In Timeouts

#![feature(async_await)]

use std::time::Duration;

use async_std::{
    prelude::*,
    task,
    io,
    net::TcpStream,
};

async fn get() -> io::Result<Vec<u8>> {
    let mut stream = TcpStream::connect("example.com:80").await?;
    stream.write_all(b"GET /index.html HTTP/1.0\r\n\r\n").await?;

    let mut buf = vec![];

    io::timeout(Duration::from_secs(5), async {
        stream.read_to_end(&mut buf).await?
        Ok(buf)
    })
}

fn main() {
    task::block_on(async {
        let raw_response = get().await.expect("request");
        let response = String::from_utf8(raw_response)
            .expect("utf8 conversion");
        println!("received: {}", response);
    });
}

Take a look around

Clone the repo:

git clone git@github.com:async-rs/async-std.git && cd async-std

Generate docs:

cargo doc --features docs.rs --open

Check out the examples. To run an example:

cargo run --example hello-world

Contributing

See our contribution document.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.