fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F>
    where
        Self: Sized,
        F: FnOnce(Self::Error) -> Self::Ok,
    {
        assert_future::<Self::Ok, _>(UnwrapOrElse::new(self, f))
    }
Unwraps this future's output, producing a future with this future's
[`Ok`](TryFuture::Ok) type as its
[`Output`](std::future::Future::Output) type.

If this future is resolved successfully, the returned future will
contain the original future's success value as output. Otherwise, the
closure `f` is called with the error value to produce an alternate
success value.

This method is similar to the [`Result::unwrap_or_else`] method.

# Examples

```
use futures::future::TryFutureExt;

# futures::executor::block_on(async {
let future = async { Err::<(), &str>("Boom!") };
let future = future.unwrap_or_else(|_| ());
assert_eq!(future.await, ());
# });
```
futures-util/src/future/try_future/mod.rs