Equatable даёт ==; Hashable — хеш для множеств/словарей; синтез возможен для многих struct/enum.
Разбор
- Инвариант: равные значения → одинаковый
hashValue/hash(into:).
- Не хешируйте
mutable поля, которые меняются пока объект в Set.
- Для class
Hashable по identity — осознанный выбор.
Set/Dictionary требуют Hashable ключей.
Итог
Equality и hashing — основа коллекций и дедупликации.