A convenience struct for applying implementing TypeEq trait. Since the trait
connects two types, this allows neither to be Self, and prevents issues with
asymmetry.
A trait that determines that two type parameters are the same type.
There is only one implementation of this trait, Constrain, which ensures that all types
satisfy the condition of being equal to themselves. There should not be a reason to implement
this for other types, which is why it is marked as unsafe.