mod sealed { pub trait Sealed {} }
use sealed::Sealed;
-macro_rules! impl_is { { $(
- unsafe impl [$($gens:tt)*] $trait:ty, for $ty:ty {}
-)* } => { $(
- unsafe impl <$($gens )*> $trait for $ty {}
- impl <$($gens )*> Sealed for $ty {}
-)* } }
-impl_is! {
-
-unsafe impl['a] IsRefToken<'a>, for &'a NoAliasSingleton {}
-unsafe impl['a] IsRefToken<'a>, for &'a mut NoAliasSingleton {}
-unsafe impl['a] IsMutToken<'a>, for &'a mut NoAliasSingleton {}
-unsafe impl['a] IsRefToken<'a>, for RefToken<'a> {}
-unsafe impl['a] IsRefToken<'a>, for MutToken<'a> {}
-unsafe impl['a] IsMutToken<'a>, for MutToken<'a> {}
-unsafe impl['a, A: IsRefToken<'a>] IsRefToken<'a>, for &'a A {}
-
-unsafe impl['r, 'a, 'aa, A] IsRefToken<'r>, for &'aa mut A
+unsafe impl<'a> IsRefToken<'a> for &'a NoAliasSingleton {}
+unsafe impl<'a> IsRefToken<'a> for &'a mut NoAliasSingleton {}
+unsafe impl<'a> IsMutToken<'a> for &'a mut NoAliasSingleton {}
+unsafe impl<'a> IsRefToken<'a> for RefToken<'a> {}
+unsafe impl<'a> IsRefToken<'a> for MutToken<'a> {}
+unsafe impl<'a> IsMutToken<'a> for MutToken<'a> {}
+unsafe impl<'a, A: IsRefToken<'a>> IsRefToken<'a> for &'a A {}
+
+unsafe impl<'r, 'a, 'aa, A> IsRefToken<'r> for &'aa mut A
where A: IsMutToken<'a>, 'a: 'r, 'aa: 'r {}
-unsafe impl['r, 'a, 'aa, A] IsMutToken<'r>, for &'aa mut A
+unsafe impl<'r, 'a, 'aa, A> IsMutToken<'r> for &'aa mut A
where A: IsMutToken<'a>, 'a: 'r, 'aa: 'r {}
-}
+impl Sealed for RefToken<'_> {}
+impl Sealed for MutToken<'_> {}
+impl Sealed for NoAliasSingleton {}
+impl<T: Sealed> Sealed for & T {}
+impl<T: Sealed> Sealed for &mut T {}
/// `&NoAliasSingleton`, but a ZST
///