From 133e6e72a36309d3c3b75bcdb5f35ba4d0a3306c Mon Sep 17 00:00:00 2001 From: timofey Date: Fri, 26 May 2023 17:00:36 +0000 Subject: [PATCH] `ApplicativeSelect` docs --- src/func/applicative_select.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/func/applicative_select.rs b/src/func/applicative_select.rs index 0f636ad..4eb0ee5 100644 --- a/src/func/applicative_select.rs +++ b/src/func/applicative_select.rs @@ -5,8 +5,10 @@ pub enum Selected<'a, A: 'a, B: 'a, T: ?Sized + WeakFunctor<'a>> { B(T::F, B), } +/// See [`ApplicativeSelect::select`]. pub type SelectedWrapped<'a, A, B, T> = Wrap<'a, Selected<'a, A, B, T>, T>; +/// Part of [`Applicative`] responsible for choosing the first value. pub trait ApplicativeSelect<'a>: Functor<'a> { fn select(fa: Self::F, fb: Self::F) -> SelectedWrapped<'a, A, B, Self> { Self::fmap(|a| Selected::A(a, fb), fa) @@ -14,6 +16,7 @@ pub trait ApplicativeSelect<'a>: Functor<'a> { } pub trait ApplicativeSelectExt<'a>: ApplicativeSelect<'a> { + /// Shorthand for [`Functor::fmap`]∘[`ApplicativeSelect::select`]. fn select_map( f: impl 'a + FnOnce(Selected<'a, A, B, Self>) -> C, fa: Self::F,