refactor(core)!: remove EitherOutput (#3341)

The trick with this one is to use `futures::Either` everywhere where we may wrap something that implements any of the `futures` traits. This includes the output of `EitherFuture` itself. We also need to implement `StreamMuxer` on `future::Either` because `StreamMuxer`s may be the the `Output` of `InboundUpgrade`.
This commit is contained in:
Thomas Eizinger
2023-01-23 23:31:30 +11:00
committed by GitHub
parent 8d6a2fc4a9
commit 4b41f5a994
15 changed files with 123 additions and 329 deletions

View File

@ -19,10 +19,11 @@
// DEALINGS IN THE SOFTWARE.
use crate::{
either::{EitherFuture, EitherName, EitherOutput},
either::{EitherFuture, EitherName},
upgrade::{InboundUpgrade, OutboundUpgrade, UpgradeInfo},
};
use either::Either;
use futures::future;
impl<A, B> UpgradeInfo for Either<A, B>
where
@ -48,7 +49,7 @@ where
A: InboundUpgrade<C, Output = TA, Error = EA>,
B: InboundUpgrade<C, Output = TB, Error = EB>,
{
type Output = EitherOutput<TA, TB>;
type Output = future::Either<TA, TB>;
type Error = Either<EA, EB>;
type Future = EitherFuture<A::Future, B::Future>;
@ -70,7 +71,7 @@ where
A: OutboundUpgrade<C, Output = TA, Error = EA>,
B: OutboundUpgrade<C, Output = TB, Error = EB>,
{
type Output = EitherOutput<TA, TB>;
type Output = future::Either<TA, TB>;
type Error = Either<EA, EB>;
type Future = EitherFuture<A::Future, B::Future>;