MonadFailAny::bind
This commit is contained in:
parent
324f99362f
commit
2bf4814b92
@ -293,6 +293,13 @@ pub trait MonadFailAny {
|
|||||||
where
|
where
|
||||||
Self: 'a;
|
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>(
|
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
||||||
|
@ -235,6 +235,16 @@ impl MonadFailAny for ResultFailAny {
|
|||||||
wa.bind_err(f)
|
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>(
|
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
) -> <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>(
|
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
) -> <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>(
|
fn rotate_out<'a, A: 'a, E0: 'a, E1: 'a>(
|
||||||
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
wa: <Self::W<E0> as WeakFunctor>::F<'a, Result<A, E1>>,
|
||||||
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
) -> <Self::W<Result<E1, E0>> as WeakFunctor>::F<'a, A>
|
||||||
|
Loading…
Reference in New Issue
Block a user