MonadFailAny::bind
This commit is contained in:
parent
324f99362f
commit
2bf4814b92
@ -293,6 +293,13 @@ pub trait MonadFailAny {
|
||||
where
|
||||
Self: 'a;
|
||||
|
||||
fn bind<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, A>,
|
||||
f: impl 'a + FnOnce(Result<A, E0>) -> <Self::W<E1> as WeakFunctor>::F<'a, A>,
|
||||
) -> <Self::W<E1> as WeakFunctor>::F<'a, A>
|
||||
where
|
||||
Self: 'a;
|
||||
|
||||
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
||||
|
@ -235,6 +235,16 @@ impl MonadFailAny for ResultFailAny {
|
||||
wa.bind_err(f)
|
||||
}
|
||||
|
||||
fn bind<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, A>,
|
||||
f: impl 'a + FnOnce(Result<A, E0>) -> <Self::W<E1> as WeakFunctor>::F<'a, A>,
|
||||
) -> <Self::W<E1> as WeakFunctor>::F<'a, A>
|
||||
where
|
||||
Self: 'a,
|
||||
{
|
||||
f(wa)
|
||||
}
|
||||
|
||||
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
||||
@ -299,6 +309,16 @@ impl<T: Monad> MonadFailAny for ResultFailOver<T> {
|
||||
})
|
||||
}
|
||||
|
||||
fn bind<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, A>,
|
||||
f: impl 'a + FnOnce(Result<A, E0>) -> <Self::W<E1> as WeakFunctor>::F<'a, A>,
|
||||
) -> <Self::W<E1> as WeakFunctor>::F<'a, A>
|
||||
where
|
||||
Self: 'a,
|
||||
{
|
||||
T::bind(wa, f)
|
||||
}
|
||||
|
||||
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
||||
|
@ -222,6 +222,16 @@ impl MonadFailAny for FutureFailAny {
|
||||
})
|
||||
}
|
||||
|
||||
fn bind<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, A>,
|
||||
f: impl 'a + FnOnce(Result<A, E0>) -> <Self::W<E1> as WeakFunctor>::F<'a, A>,
|
||||
) -> <Self::W<E1> as WeakFunctor>::F<'a, A>
|
||||
where
|
||||
Self: 'a,
|
||||
{
|
||||
Box::pin(async { f(wa.await).await })
|
||||
}
|
||||
|
||||
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
||||
|
Loading…
Reference in New Issue
Block a user