Почему Rust нужна хэш-функция для реализации объектов, а JS такое не использует?
Вообще объекты в JS - это тоже hashmap, и в этой структуре есть защита от коллизий:
Если вдруг два разных ключа получили один и тот же хеш, то они складываются в одну корзину, и при попытке получить значение по ключу - придётся ещё пройтись по всем парам ключ-значение в этой корзине, чтобы найти нужный ключ, уже используя Eq.
Есть здесь хеш таблица. А Map по вашему что такое? Хеш таблица. А про массивы - это массивы являются объектами, а не наоборот :)