fn err_into<E>(self) -> ErrInto<Self, E>
    where
        Self: Sized,
        Self::Error: Into<E>,
    {
        assert_future::<Result<Self::Ok, E>, _>(ErrInto::new(self))
    }
Maps this future's [`Error`](TryFuture::Error) to a new error type
using the [`Into`](std::convert::Into) trait.

This method does for futures what the `?`-operator does for
[`Result`]: It lets the compiler infer the type of the resulting
error. Just as [`map_err`](TryFutureExt::map_err), this is useful for
example to ensure that futures have the same [`Error`](TryFuture::Error)
type when using [`select!`] or [`join!`].

Note that this method consumes the future it is called on and returns a
wrapped version of it.

# Examples

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

# futures::executor::block_on(async {
let future_err_u8 = async { Err::<(), u8>(1) };
let future_err_i32 = future_err_u8.err_into::<i32>();
# });
```

[`join!`]: crate::join
[`select!`]: crate::select
futures-util/src/future/try_future/mod.rs