MonadExt
lift lifetime
This commit is contained in:
parent
68f9c82402
commit
1750be2df9
11
src/func.rs
11
src/func.rs
@ -204,23 +204,20 @@ pub trait Monad: Applicative {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait MonadExt: Monad {
|
||||
pub trait MonadExt<'a>: 'a + Monad {
|
||||
/// [`FnMut`] version of [`Monad::iterate`].
|
||||
/// Reasoning for this method existing at all is that
|
||||
/// most usecases are better modelled with [`FnMut`]
|
||||
/// rather than some dedicated state type.
|
||||
fn iterate_mut<'a, A: 'a, B: 'a>(
|
||||
fn iterate_mut<A: 'a, B: 'a>(
|
||||
a: A,
|
||||
f: impl 'a + FnMut(A) -> Self::F<'a, ControlFlow<B, A>>,
|
||||
) -> Self::F<'a, B>
|
||||
where
|
||||
Self: 'a,
|
||||
{
|
||||
) -> Self::F<'a, B> {
|
||||
Self::iterate(BindableMut::new(a, f))
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Monad> MonadExt for T {}
|
||||
impl<'a, T: 'a + Monad> MonadExt<'a> for T {}
|
||||
|
||||
/// Part of [`MonadFail`] responsible for Haskell's `fail`.
|
||||
pub trait Fail<E>: WeakFunctor {
|
||||
|
Loading…
Reference in New Issue
Block a user