Можешь ли ты объяснить назначение протоколов `Equatable` и `Hashable` в Swift и описать, чем они отличаются друг от друга? — ДейлиПреп