Valery
тоесть у Key(1,0,0)
Valery
и Key(0,1,0)
Valery
одинаковый хэш
Valery
коллизия?
Alex
хэшфункция плохая
Valery
именно
Valery
коллизия есть, дальше что?
Sergey
и Key(0,1,0)
не надо писать столбиками сообщения
Berkus
не надо писать столбиками сообщения
погоди, тут происходит таинство понимания что такое хэшмап!
Valery
use std::collections::HashMap; use std::hash::*; #[derive(Eq, PartialEq, Debug)] struct Key(i32); impl Hash for Key { fn hash<H: Hasher>(&self, state: &mut H) { 1usize.hash(state); } } fn main() { let mut hm = HashMap::new(); hm.insert(Key(1), "One"); hm.insert(Key(2), "Two"); hm.insert(Key(3), "Three"); hm.insert(Key(4), "Four"); println!("{:?}", hm); }
Valery
я думаю может прояснить пару вопросов
պլհկ
но это не валидный impl Hash
Valery
это рабочий пример
Valery
даже с невалидным impl Hash
Valery
чтобы для тебя не означало слово валидный :D
Loo
чтобы для тебя не означало слово валидный :D
https://doc.rust-lang.org/std/hash/trait.Hash.html#hash-and-eq
Loo
> When implementing both Hash and Eq, it is important that the following property holds: > k1 == k2 -> hash(k1) == hash(k2)
Valery
Key(1) == Key(1) -> hash(Key(1)) == hash(Key(1))
Loo
ой всё
Loo
Valery
читать я умею, тут разговор о страшных коллизиях был
Valery
вот хэш у которого 100% коллизий, и хэшмапа все еще работает
Valery
я вот одного не понимаю
Berkus
За линейное время
никто не обещал O(1) при 100% коллизий
Valery
@berkus спаси меня
ㅤ
Просто при коллизиях хешмапа не перестаёт работать, она просто работает не так, как ожидается (в плане асимптотики операций)
Valery
уже и за мной выехали
Berkus
мало того, я чуваку выше прямо написал - при его объемах памяти хэшмапа не нужна, т.к. линейный поиск (ЛИНЕЙНЫЙ) сделает всё и так достаточно быстро без хэширования
Valery
она работает не так быстро как ожидается
Valery
но 100% так как ожидается
Makc
ебашь, темы свободны полностью
Всё читать не осилил, даты какие?
Loo
кто хочет зайти в эту субботу, все в https://www.meetup.com/Rust-%D0%B2-%D0%9F%D0%B8%D1%82%D0%B5%D1%80%D0%B5/events/nhpkmpyxkbkb/ отметились? :)
Alexander
тот же beer python если верить @nndii более чем
Ага, ничего так. Приходите к нам, покажем, как организовывать пивные митапы. :-)
Sergey
Оо
Sergey
Тоже хочу
Sergey
локация и правда бомбическая (про флакон), привет вам от петонщечгов!
Alexander
Официального объявления пока нет... 26-е, дефолт-сити, White Eagle Pub, 19:00. Приходите, будем вас холиварить.
Αλεχ
линейный поиск есть для Ord
Αλεχ
только вот Eq не всегда Ord
Alex
на сходках не был еще, там все тупо бухают?
Sergey
@Fedcomp обмен опытом, ну 🙂.
Sergey
а че на счет митапа?
Alexander
Гыыы... А у нас на следующей даже девушка будет читать доклад! Вот.
Alexander
И нет, не все бухают. У нас есть и совсем непьющие. Один.
Anonymous
В Минске в прошлый раз была. Хотя возможно, что за компанию.
Alex
сосисочные вечеринки?
Sergey
сосисочные вечеринки?
Когда на вечеринке только парни Ну
Anonymous
պլհկ
meanwhile at avito https://medium.com/avitotech/bioyino-a-distributed-scalable-statsd-3445acb177eb https://github.com/avito-tech/bioyino/blob/master/Cargo.toml
Kerrigan
так он тут сидит
неудивительно
Loo
неудивительно
ну в смысле он помоему писал ещё в том году
Loo
что пилит чото у себя
Loo
если не ошибаюсь
Anton
Удалил сообщение
Anton
Круто чо
Berkus
линейный поиск есть для Ord
для линейного поиска нужен только Eq, большы ты никак не сравниваешь же
Αλεχ
а, ты прям предлагаешь вместо мапы все в массиве хранить?
Αλεχ
ну так блин это так не будет работать
Αλεχ
больше 4000 итераций нельзя совершить в солидити, например
Αλεχ
так что 4001 элемент я уже не проверю, даже если он подходит
Berkus
о, ботики поперли
Berkus
@notplhk
Berkus
а, ты прям предлагаешь вместо мапы все в массиве хранить?
в сортированном массиве норм - бинарный поиск же
Berkus
но тогда будет нужен Ord :)
Αλεχ
О чем я сразу и сказал)
Berkus
ну я ж не знаю что ты там пишешь, раз хранишь в векторе - значит может быть реально маленький кейс
Αλεχ
не
Αλεχ
я пытаюсь реализовать для общего случая
Αλεχ
до 2^32 элементов
Αλεχ
пока что я склоняюсь к тому, чтобы не обрабатывать коллизии вообще
Αλεχ
просто требовать от чувака ключ