Agree with others that your type semantically fulfills the requirements of Equatable and could just conform. Not sure I understand why the reticence to do so.
That said, you can just switch over (response, response), binding one and pattern matching the other. Or nest if case inside the case where you match on the type.