pub fn select_all<I>(iter: I) -> SelectAll<I::Item>
where
    I: IntoIterator,
    I::Item: Future + Unpin,
{
    let ret = SelectAll { inner: iter.into_iter().collect() };
    assert!(!ret.inner.is_empty());
    assert_future::<(<I::Item as Future>::Output, usize, Vec<I::Item>), _>(ret)
}
Creates a new future which will select over a list of futures.

The returned future will wait for any future within `iter` to be ready. Upon
completion the item resolved will be returned, along with the index of the
future that was ready and the list of all the remaining futures.

There are no guarantees provided on the order of the list with the remaining
futures. They might be swapped around, reversed, or completely random.

This function is only available when the `std` or `alloc` feature of this
library is activated, and it is activated by default.

# Panics

This function will panic if the iterator specified contains no items.
futures-util/src/future/select_all.rs