Merge pull request #844 from fuxingZhang/patch-1

Update ch17-01-futures-and-syntax.md
pull/846/head
KaiserY 2 months ago committed by GitHub
commit 3c5f27ebf9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -134,7 +134,7 @@ error[E0752]: `main` function is not allowed to be `async`
`main` 不能标记为 `async` 的原因是异步代码需要一个 *运行时*:即一个管理执行异步代码细节的 Rust crate。一个程序的 `main` 函数可以 *初始化* 一个运行时,但是其 *自身* 并不是一个运行时。(稍后我们会进一步解释原因。)每一个执行异步代码的 Rust 程序必须至少有一个设置运行时并执行 futures 的地方。
大部分支持异步的语言会打包一个运行时在语言中。Rust 则不是,相这里有很多不同的异步运行时,每一个都有适合其目标的权衡取舍。例如,一个拥有很多核心和大量内存的高吞吐 web server 与一个单核、少量内存并且没有堆分配能力的微控制器相比有着截然不同的需求。提供这些运行时的 crate 通常也提供了例如文件或者网络 IO 这类常用功能的异步版本。
大部分支持异步的语言会打包一个运行时在语言中Rust 则不是。相反,这里有很多不同的异步运行时,每一个都有适合其目标的权衡取舍。例如,一个拥有很多核心和大量内存的高吞吐 web server 与一个单核、少量内存并且没有堆分配能力的微控制器相比有着截然不同的需求。提供这些运行时的 crate 通常也提供了例如文件或者网络 IO 这类常用功能的异步版本。
从这里到本章余下部分,我们会使用 `trpl` crate 的 `run` 函数,它获取一个 future 作为参数并运行到结束。在内部,调用 `run` 会设置一个运行时来运行传递的 future。一旦 future 完成,`run` 返回 future 返回的任何值。

Loading…
Cancel
Save