#![feature(specialization)]
pub(crate) trait IsEq<T> {}
impl<T> IsEq<T> for T {}
pub(crate) const fn type_eq<T: ?Sized, U: ?Sized>() -> bool {
trait TypeEq<U: ?Sized> {
const VALUE: bool;
}
impl<T: ?Sized, U: ?Sized> TypeEq<U> for T {
default const VALUE: bool = false;
}
impl<T: ?Sized> TypeEq<T> for T {
const VALUE: bool = true;
}
<T as TypeEq<U>>::VALUE
}