Represents types that can be used to construct a TypedKey and
its variants. Although it has the exact same method definitions as
the Key trait, it differs in its specific usage scenario and as
such the two traits are not connected in any way at the type level.