No description
Find a file
bors[bot] 568f6a6482
Merge #179
179: adds stream::find combinator r=yoshuawuyts a=montekki

A find combinator
---
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.find
Ref: #129 

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-10 21:49:51 +00:00
benches remove async_await feature gate 2019-08-21 00:29:35 -07:00
ci Restore Version Sort (#121) 2019-08-28 17:16:02 +02:00
docs Fix book to use futures_channel and futures_util, re-enable testing (#172) 2019-09-10 12:54:06 +02:00
examples More robust file implementation 2019-09-07 23:17:20 +02:00
src adds stream::find combinator 2019-09-10 23:38:11 +03:00
tests Make sure ownership is transferred in into_raw_fd 2019-09-06 10:36:25 +01:00
.gitignore Initial commit 2019-08-08 14:44:48 +02:00
.travis.yml Merge #168 2019-09-10 11:59:11 +00:00
bors.toml Add bors.toml 2019-09-04 19:32:47 +02:00
Cargo.toml Fix book to use futures_channel and futures_util, re-enable testing (#172) 2019-09-10 12:54:06 +02:00
CHANGELOG.md Update CHANGELOG.md 2019-08-26 12:54:55 -07:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2019-08-12 20:02:31 +02:00
LICENSE-APACHE Initial commit 2019-08-08 14:44:48 +02:00
LICENSE-MIT Initial commit 2019-08-08 14:44:48 +02:00
README.md Fix typo. (#134) 2019-08-31 11:36:34 +02:00
rustfmt.toml Add rustfmt config 2019-08-08 16:04:14 +02:00

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 your Cargo.toml:

[dependencies]
async-std = "0.99"

Or use cargo add if you have it installed:

$ cargo add async-std

Hello world

use async_std::task;

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

Low-Friction Sockets with Built-In Timeouts

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)
    }).await
}

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.