mirror of
https://github.com/rust-lang/book.git
synced 2026-05-20 17:59:09 -04:00
Up to this point, the chapter has stuck to `join` and `join3`, as simple function-based APIs. The `join_all` API is obviously more convenient than those *if you can use it*, but being able to use it requires having something which `impl Iterator` of a given type, and therefore demands a homogeneous type, which motivates introducing `Box::pin`. That in turn is quite annoying to work with and requires `Output = <same>` for all the futures in the collection, because of how `join_all` is typed (Rust does not have the ability to do do variadic types, which is what would be necessary for `join_all` to work the way we might want). Thus, we get a motivation for `futures::join!`, which unlike `join_all` *can* work with heterogeneous types. This fills out a fair bit of the text here and adds a lot of the listing support, and outlines what remains to do text-wise.