3 个不稳定版本
0.2.0 | 2018 年 11 月 6 日 |
---|---|
0.1.1 | 2018 年 10 月 26 日 |
0.1.0 | 2018 年 10 月 26 日 |
#2066 在 异步
28 每月下载
7KB
Actix Web Async/Await 预览
此 crate 提供了对支持 async/await 的 Actix 的预览。
用法
要使用此 crate,您需要从 Rust 2018 版本 crate 开始。
将其添加到您的 Cargo.toml 中
# In the `[package]` section
edition = "2018"
# In the `[dependencies]` section
actix-web-async-await = "0.1.0"
然后开始。以下是一个添加了异步延迟请求 2 秒的 Actix 主示例。
一般想法是将您的 async fn
处理器包装在 compat
中。对于需要多个参数的路由,有 compat2
、compat3
等。
#![feature(await_macro, futures_api, async_await)]
use actix_web::{http, server, App, Path, Responder, Result};
use actix_web_async_await::{await, compat};
use std::time::{Instant, Duration};
use tokio::timer::Delay;
async fn index(info: Path<(u32, String)>) -> Result<impl Responder> {
// Wait 2s
await!(Delay::new(Instant::now() + Duration::from_secs(2)))?;
// Proceed with normal response
Ok(format!("Hello {}! id:{}", info.1, info.0))
}
fn main() {
server::new(
|| App::new()
.route("/{id}/{name}/index.html", http::Method::GET, compat(index)))
.bind("127.0.0.1:8080").unwrap()
.run();
}
请注意,您当前的 async fn
处理器必须返回 Result
。这不仅是因为它们正在转换为 futures v0.1
,这需要一个错误类型,而且还因为 Rust 异步生态系统中几乎所有内容都使用 futures v0.1
,这将导致所有 futures 出现错误。如果需要,可以提供无错误的 compat
。
许可
根据您选择的以下任一许可
- Apache License,版本 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
贡献
除非您明确声明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证的定义,应按上述方式双许可,不附加任何其他条款或条件。
依赖
~27MB
~503K SLoC