Diffstat (limited to 'src/hkt.rs')
| -rw-r--r-- | src/hkt.rs | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -28,20 +28,20 @@ pub struct Invariant<'a>(PhantomData<fn(&'a ()) -> &'a ()>); #[repr(transparent)] pub struct Marker<T: ?Sized>(PhantomData<fn() -> *const T>); -impl<T> Copy for Marker<T> {} -impl<T> Clone for Marker<T> { +impl<T: ?Sized> Copy for Marker<T> {} +impl<T: ?Sized> Clone for Marker<T> { fn clone(&self) -> Self { *self } } -impl<T> core::fmt::Debug for Marker<T> { +impl<T: ?Sized> core::fmt::Debug for Marker<T> { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_tuple("Marker").finish() } } -impl<T> Default for Marker<T> { +impl<T: ?Sized> Default for Marker<T> { fn default() -> Self { Self(PhantomData) } @@ -70,7 +70,7 @@ macro_rules! higher_ranked_trait { type T: RaiseForLt<$($lt,)+ $($($generic)*,)? B, HigherRanked = Self> + ?Sized + $($lower)*; } - pub trait RaiseForLt<$($lt,)+ $($($generic)*,)? B> + pub trait RaiseForLt<$($lt,)+ $($($generic)*,)? B> where $($($lower_where)*)? $($($higher_where)*)? @@ -80,35 +80,35 @@ macro_rules! higher_ranked_trait { pub type Bound<$($lt,)+ $($($generic)*)?> = $bound; - pub trait MemberType$(<$($generic)*>)?: + pub trait MemberType$(<$($generic)*>)?: for<$($lt,)+> LowerForLt<$($lt,)+ $($($generic)*,)? Bound<$($lt,)+ $($($generic)*)?>> + $($higher)* $(where $($higher_where)*)? {} - impl<$($($generic)*,)? __: ?Sized> MemberType$(<$($generic)*>)? for __ + impl<$($($generic)*,)? __: ?Sized> MemberType$(<$($generic)*>)? for __ where __: for<$($lt,)+> LowerForLt<$($lt,)+ $($($generic)*,)? Bound<$($lt,)+ $($($generic)*)?>> + $($higher)? $($($higher_where)*)? {} - pub trait LowerType<$($lt,)+ $($($generic)*)?>: + pub trait LowerType<$($lt,)+ $($($generic)*)?>: RaiseForLt<$($lt,)+ $($($generic)*,)? Bound<$($lt,)+ $($($generic)*)?>> + $($lower)* where $($($lower_where)*)? $($($higher_where)*)? {} - impl<$($lt,)+ $($($generic)*,)? __: ?Sized> LowerType<$($lt,)+ $($($generic)*)?> for __ + impl<$($lt,)+ $($($generic)*,)? __: ?Sized> LowerType<$($lt,)+ $($($generic)*)?> for __ where __: RaiseForLt<$($lt,)+ $($($generic)*,)? Bound<$($lt,)+ $($($generic)*)?>> + $($lower)*, $($($lower_where)*)? $($($higher_where)*)? {} - pub type T<$($lt,)+ $($($generic)*,)? __> = + pub type T<$($lt,)+ $($($generic)*,)? __> = <__ as LowerForLt<$($lt,)+ $($($generic)*,)? Bound<$($lt,)+ $($($generic)*)?>>>::T; - pub type HigherRanked<$($lt,)+ $($($generic)*,)? __> = + pub type HigherRanked<$($lt,)+ $($($generic)*,)? __> = <__ as RaiseForLt<$($lt,)+ $($($generic)*,)? Bound<$($lt,)+ $($($generic)*)?>>>::HigherRanked; } } @@ -120,7 +120,7 @@ pub use higher_ranked_trait; macro_rules! higher_ranked_type { { impl $higher_trait:ident { - impl$([$($lower_generic:tt)*])? type T[$($lower_forward:tt)*] for $lower_higher:ty = + impl$([$($lower_generic:tt)*])? type T[$($lower_forward:tt)*] for $lower_higher:ty = $lower:ty $(where {$($lower_where:tt)*})?; |