pub fn select_ok<I>(iter: I) -> SelectOk<I::Item>
where
    I: IntoIterator,
    I::Item: TryFuture + Unpin,
{
    let ret = SelectOk { inner: iter.into_iter().collect() };
    assert!(!ret.inner.is_empty(), "iterator provided to select_ok was empty");
    assert_future::<
        Result<(<I::Item as TryFuture>::Ok, Vec<I::Item>), <I::Item as TryFuture>::Error>,
        _,
    >(ret)
}
Creates a new future which will select the first successful future over a list of futures.

The returned future will wait for any future within `iter` to be ready and Ok. Unlike
`select_all`, this will only return the first successful completion, or the last
failure. This is useful in contexts where any success is desired and failures
are ignored, unless all the futures fail.

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_ok.rs