В Objective-C (и других языках) относительно хорошая реализация по умолчанию - (NSUInteger)hash может быть:
- (NSUInteger)hash {
   return 31u * [self.property1 hash] + [self.property2 hash];
}
Предполагая, что property1 и property2 возвращают хорошие значения для hash.
Это не работает в методе Swift, эквивалентном var hashValue: Int, определенном в его протоколе Hashable.
Эквивалентный код Swift, вероятно, переполняется, и это ошибка времени выполнения в Swift.
var hashValue: Int {
    return 31 * property1.hashValue + property2.hashValue // overflow-tastic
}
Итак, мой вопрос: каков наилучший метод генерации хэш-значений (реализация Hashable) в Swift? Должен ли я просто использовать XOR? Хотя я понимаю, что XOR не идеален для создания равномерных распределений хэшей. Возможно, что-то более экзотическое?
