mod box_bi_transformer;
pub use box_bi_transformer::BoxBiTransformer;
#[cfg(feature = "rc")]
mod rc_bi_transformer;
#[cfg(feature = "rc")]
pub use rc_bi_transformer::RcBiTransformer;
mod arc_bi_transformer;
pub use arc_bi_transformer::ArcBiTransformer;
mod binary_operator;
pub use binary_operator::BinaryOperator;
mod box_binary_operator;
pub use box_binary_operator::BoxBinaryOperator;
mod arc_binary_operator;
pub use arc_binary_operator::ArcBinaryOperator;
#[cfg(feature = "rc")]
mod rc_binary_operator;
#[cfg(feature = "rc")]
pub use rc_binary_operator::RcBinaryOperator;
mod box_conditional_bi_transformer;
pub use box_conditional_bi_transformer::BoxConditionalBiTransformer;
#[cfg(feature = "rc")]
mod rc_conditional_bi_transformer;
#[cfg(feature = "rc")]
pub use rc_conditional_bi_transformer::RcConditionalBiTransformer;
mod arc_conditional_bi_transformer;
pub use arc_conditional_bi_transformer::ArcConditionalBiTransformer;
pub trait BiTransformer<T, U, R> {
#[must_use = "the computed callback result should be used"]
fn apply(&self, first: T, second: U) -> R;
}
impl<T, U, R, F> BiTransformer<T, U, R> for F
where
F: Fn(T, U) -> R,
{
#[inline(always)]
fn apply(&self, first: T, second: U) -> R {
self(first, second)
}
}