diff --git a/src/ch17-03-more-futures.md b/src/ch17-03-more-futures.md index 55856a3..1d665b5 100644 --- a/src/ch17-03-more-futures.md +++ b/src/ch17-03-more-futures.md @@ -218,7 +218,7 @@ received 'you' 这里还有一些我们可以进一步探索的内容。首先,因为通过 `Box` 来将这些 futures 放到堆上,使用 `Pin>` 会带来少量的额外开销,而我们这么做仅仅是为了使类型对齐。毕竟这里实际上并不 *需要* 堆分配:这些 futures 对于这个特定的函数来说是本地的。如上所述,`Pin` 本身是一个封装类型,因此我们可以在 `Vec` 中拥有单一类型的好处(也就是使用 `Box` 的初始原因)而不用堆分配。我们可以通过 `std::pin::pin` 宏来直接对每个 future 使用 `Pin`。 -然而,我们仍然必须现实地知道被 pin 的引用的类型:否则 Rust 仍然不知道如何将它们解释为动态 trait objects,这是将它们放进 `Vec` 所需的。因此我们在定义每个 future 的时候使用 `pin!`,并将 `futures` 定义为一个包含被 pin 的动态 `Future` 类型的可变引用的 `Vec`,如示例 17-19 所示。 +然而,我们仍然必须显式地知道被 pin 的引用的类型:否则 Rust 仍然不知道如何将它们解释为动态 trait objects,这是将它们放进 `Vec` 所需的。因此我们在定义每个 future 的时候使用 `pin!`,并将 `futures` 定义为一个包含被 pin 的动态 `Future` 类型的可变引用的 `Vec`,如示例 17-19 所示。