1.2.std::future 与 futures-rs

未匹配的标注

std::futurefutures-rs

Rust 中Future可能指两种不同的类型:

  • 第一种是指 Rust 标准库中的 std::future::Future
  • 第二种是指 futures-rs crate 中的futures::future::Future

futures-rs 中定义的 future 类型是标准库中 future 的原始实现。Rust 将核心的 Future trait 移入标准库中并改为std::future::Future以实现async/await语法。在某种意义上讲,std::future::Future可以看作是futures::future::Future的最小子集。

了解std::future::Futurefutures::future::Future的区别,以及async-std对他们采取的措施非常重要。std::future::Future并非你用于与用户交互的东西,除非你调用它的.await函数。std::future::Future的内部工作方式对于实现Future的人来说非常有吸引力,因为它非常有效。过去Future中定义的大量功能已经被移至一个叫FuturesExt的扩展 trait中。据此,你应该可以推断出futures库是 Rust 核心异步功能的扩展。

futures相同,async-std也重新导出了核心std::future::Future类型。您可以通过将futures加入您的Cargo.toml中并导入FuturesExt来使用它的扩展。

接口与稳定性

async-std旨在成为像 Rust 标准库一样稳定可靠的库。这也意味着我们的接口并不依赖于futures库。同时,async-std的类型也实现了所有futures库中的 traits,以提供许多用户喜爱的futures-rs库带来的便利。

幸运的是,上述的方法为您提供了充分的灵活性。如果您注重稳定性,您可以只使用async-std库。如果您更喜欢futures库的接口,您可以引入它。这两种用法都没有问题。

async_std::future

您可以在async_std::future模块中找到与处理各种 futures 相关的重要支持函数,我们同样保证它们的稳定性。

Streams 和 Read/Write/Seek/BufRead traits

由于 Rust 编译器的限制,它们只能在async_std中实现,而不可以由用户自己实现。

原文链接:book.async.rs/

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/rust-async-std/...

译文地址:https://learnku.com/docs/rust-async-std/...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~