利用 Futures 包理解异步操作
1. Futures 包的基本类型
Futures 包为 Rust 开发者提供了用于异步编程的零成本抽象,它契合 Rust 的借用系统,有助于创建轮询资源并在结果可用时返回的类型。日常使用中,仅需了解 Futures 包的几种类型,其中三个基本类型为 Future
、 Stream
和 Sink
。
2. 使用 Future 特性
Future
是一个特性,它代表一个无法立即完成的操作,并在未来返回结果。和 Result
枚举类似, Future
有两个结果变体,由关联类型 Item
和 Error
表示。该特性有一个 poll
方法,用于获取结果。这个方法会被反应器调用,直到返回 Error
或 Async::Ready
值。 Async
是一个枚举,有 Ready
和 Pending
两个变体,用于表示异步操作的结果。 Ready
表示值已准备好使用,而 Pending
表示值尚未可用,稍后会准备好。
与 Result
不同, Future
是一个特性,意味着其实现未被指定,许多类型都