diff --git a/src/func/applicative_select.rs b/src/func/applicative_select.rs index 98beced..bdaf72d 100644 --- a/src/func/applicative_select.rs +++ b/src/func/applicative_select.rs @@ -19,17 +19,14 @@ pub trait ApplicativeSelect: Functor { } } -pub trait ApplicativeSelectExt: ApplicativeSelect { - fn select_map<'a, A: 'a, B: 'a, C: 'a>( +pub trait ApplicativeSelectExt<'a>: 'a + ApplicativeSelect { + fn select_map( f: impl 'a + FnOnce(Selected<'a, A, B, Self>) -> C, fa: Self::F<'a, A>, fb: Self::F<'a, B>, - ) -> Self::F<'a, C> - where - Self: 'a, - { + ) -> Self::F<'a, C> { Self::fmap(f, Self::select(fa, fb)) } } -impl ApplicativeSelectExt for T {} +impl<'a, T: 'a + ApplicativeSelect> ApplicativeSelectExt<'a> for T {}