Diffstat (limited to 'src/hkt.rs')
| -rw-r--r-- | src/hkt.rs | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -51,7 +51,7 @@ impl<T: ?Sized> Default for Marker<T> { #[macro_export] macro_rules! higher_ranked_trait { { - $vis:vis type class $name:ident$([$($generic:tt)*])? for<$($lt:lifetime),+> { + $vis:vis type class $name:ident$([$($generic:tt)*])? for<$($lt:lifetime),+> <$($for_lt:lifetime),+> { type Bound = $bound:ty; type T: {$($lower:tt)*} $(where {$($lower_where:tt)*})?; @@ -70,25 +70,23 @@ macro_rules! higher_ranked_trait { $($($lower_where)*)? $($($higher_where)*)? { - type T: RaiseForLt<$($lt,)+ $($($generic)*,)? B, HigherRanked = Self> + ?Sized + $($lower)*; + type T: + RaiseForLt<$($lt,)+ $($($generic)*,)? B, HigherRanked = Self> + + for<$($for_lt),+> RaiseForLt<$($for_lt,)+ $($($generic)*,)? Bound<$($for_lt,)+ $($($generic)*)?>> + + ?Sized + $($lower)*; } pub trait RaiseForLt<$($lt,)+ $($($generic)*,)? B> - // : RaiseForLtAll<$($($generic)*,)? B> where $($($lower_where)*)? $($($higher_where)*)? { - type HigherRanked: LowerForLt<$($lt,)+ $($($generic)*,)? B, T = Self> + ?Sized + $($higher)*; + type HigherRanked: + LowerForLt<$($lt,)+ $($($generic)*,)? B, T = Self> + + for<$($for_lt),+> LowerForLt<$($for_lt,)+ $($($generic)*,)? Bound<$($for_lt,)+ $($($generic)*)?>> + + ?Sized + $($higher)*; } - // pub trait RaiseForLtAll<$($($generic)*,)? B> - // where - // $($($higher_where)*)? - // { - // type HigherRankedAll: for<$($lt,)+> LowerForLt<$($lt,)+ $($($generic)*,)? $bound> + ?Sized + $($higher)*; - // } - pub type Bound<$($lt,)+ $($($generic)*)?> = $bound; pub trait MemberType$(<$($generic)*>)?: |