While you can declare on a protocol that all conforming types must conform to another protocol, you can't declare that the protocol existential itself conforms to a protocol. This prevents AnySQLColumnKey from conforming to Equatable, even though heterogeneous comparisons of its subtypes are pretty easy to do.