use crate::nest::{TupleNest, TupleUnnest};
use crate::TypeMap;
#[doc(hidden)]
pub trait TupleMapper {
type Output;
}
impl<TUPLE, PREDICATE> TupleMapper for (TUPLE, PREDICATE)
where
TUPLE: TupleNest,
<TUPLE as TupleNest>::Nested: TypeMap<PREDICATE>,
<<TUPLE as TupleNest>::Nested as TypeMap<PREDICATE>>::Mapped: TupleUnnest,
{
type Output =
<<<TUPLE as TupleNest>::Nested as TypeMap<PREDICATE>>::Mapped as TupleUnnest>::Unnested;
}
#[macro_export]
macro_rules! tuple_mapper {
($predicate:ident::map($ty:ty)) => {
<($ty, $predicate) as $crate::__macro_support::TupleMapper>::Output
};
}