//! Thread-safe by-ref applicative functors, combining [`SendRefPointed`](crate::classes::SendRefPointed) and [`SendRefSemiapplicative`](crate::classes::SendRefSemiapplicative).
//!
//! This is the thread-safe counterpart of [`RefApplicative`](crate::classes::RefApplicative).
#[fp_macros::document_module]
mod inner {
use crate::classes::*;
/// A type that supports both thread-safe pure value injection (via reference)
/// and thread-safe by-ref function application within a context.
///
/// This is the thread-safe counterpart of [`RefApplicative`].
/// Automatically implemented for any type implementing both
/// [`SendRefPointed`] and [`SendRefSemiapplicative`].
pub trait SendRefApplicative:
SendRefPointed + SendRefSemiapplicative + SendRefApplyFirst + SendRefApplySecond {
}
/// Blanket implementation of [`SendRefApplicative`].
#[document_type_parameters("The brand type.")]
impl<Brand> SendRefApplicative for Brand where
Brand: SendRefPointed + SendRefSemiapplicative + SendRefApplyFirst + SendRefApplySecond
{
}
}
pub use inner::*;