5个版本
使用旧的Rust 2015
0.2.1 | 2016年9月13日 |
---|---|
0.2.0 | 2016年9月13日 |
0.1.2 | 2016年3月11日 |
0.1.1 | 2015年9月8日 |
0.1.0 | 2015年9月8日 |
#1848 in 异步
每月37次下载
7KB
64 行
Async-Await
仅提供两个宏来模拟使用Futures(由eventual提供)实现的简单异步和等待。
用法
此库可在 crates.io
获取。将其添加到您的 Cargo.toml
[dependencies]
async-await = "0.1.2"
示例
以下是一个简单的示例,您需要执行 #[macro_use]
和 use async_await::*;
,因为宏会进行展开:
#[macro_use]
extern crate async_await;
use async_await::*;
fn main() {
let computation = async!{"Hello world!"};
println!("{}", await!(computation));
}
另一个使用 hyper 的示例,共享客户端和异步块:
#[macro_use]
extern crate async_await;
extern crate hyper;
use std::io::Read;
use std::sync::Arc;
use async_await::*;
use hyper::Client;
use hyper::header::Connection;
fn main() {
let client = Arc::new(Client::new());
let client_comp = client.clone();
let computation = async!{{
let mut res = client_comp.get("https://rust-lang.net.cn/")
.header(Connection::close())
.send().unwrap();
let mut body = String::new();
res.read_to_string(&mut body).unwrap();
body
}};
println!("Before await!");
println!("{}", await!{computation});
println!("After await!");
}
您也可以提供默认的计算失败:
#[macro_use]
extern crate async_await;
use async_await::*;
fn main() {
let computation = async!{panic!(":()")};
assert_eq!("Recovered!", await!{computation, "Recovered!"});
}
许可证
许可协议如下:
- Apache许可证版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交给工作的任何贡献,根据Apache-2.0许可证定义,都应以上述方式双重许可,不得附加任何其他条款或条件。
依赖项
~53KB