Компилятор может синтезировать hash(into:) из свойств; вручную комбинируютhasher через hasher.combine.
Разбор
- Согласованность с
== обязательна.
- Не включайте шумовые поля.
- SipHash и т.п. — детали стандартной библиотеки.
- Изменение хеша объекта уже лежащего в Set — баг.
Итог
Корректный hashing = те же поля, что и в equality, в стабильном виде.