futures-await 现在 async/await 正式成为 Rust 语言的一部分,这要感谢所有帮助我们的开发者。
futures-await 现在 async/await 正式成为 Rust 语言的一部分,这要感谢所有帮助我们的开发者。
现在 async/await 正式成为 C# 的一部分,这个框架就不再需要了 Rust 语言,感谢所有帮助实现这一目标的人! Rust 和
futures库的 Async/await 语法
目前在 Rust 中处理期货的主要方式是通过各种
在 [Future] 特性上使用组合器。这并不完全是“回调地狱”,但可能
有时感觉就像代码的右移趋势在每个新版本中都在增加
你添加的关闭。async/await 的目的是提供更加强大的异步功能。
在保留异步所有功能的同时,为代码提供"同步"感受
密码!
以下是这个箱子的功能简要介绍:
#[async]
fn fetch_rust_lang(client: hyper::Client) -> io::Result {
let response = await!(client.get("https://www.rust-lang.org"))?;
if !response.status().is_success() {
return Err(io::Error::new(io::ErrorKind::Other, "request failed"))
}
let body = await!(response.body().concat())?;
let string = String::from_utf8(body)?;
Ok(string)
}这里的主要内容是:
#[async]标签,这意味着它们是异步的,调用时会返回一个未来,而不是返回列出的结果。 * await!宏允许在未来完成时进行阻塞。虽然这实际上不会阻塞线程,但它只是"阻塞"了从fetch_rust_lang返回的未来,使其无法继续。你可以将await!宏看作是从未来到其Result的函数,在过程中消耗了未来。 * 在#[async]函数中,错误处理更加自然。我们可以使用?运算符以及简单的return Err语句。使用futures库中的组合器通常更加繁琐。 * 从fetch_rust_lang返回的未来实际上是在编译时生成的状态机,不会进行隐式内存分配。它是基于下面描述的生成器构建而成。您还可以使用异步方法:
暂无开放 Issues,或尚未同步最近议题。