умолчанию это RandomState. Последовательность элементов в коллекции с таким хешером непредсказуема. Поскольку я использую эти коллекции для генерации кода внутри процедурного макроса, мне нужно, чтобы результат вывода был предсказуемый. Можно ли чем-то заменить RandomState?
fnvhash можно попробовать. Или xxhash - там есть seed, который можно сделать постоянным. В принципе, любой другой хеш без начальной рандомизации.
А есть решения из std?
HashMap::with_hasher(...)
А что туда передать-то? )
Да возьмите BTreeSet, если порядок так уж нужен. :)
Ладно, я пожалуй оставлю как есть, в конце только перед выводом отсортирую
https://doc.rust-lang.org/src/std/collections/hash/map.rs.html#2964-2971 Я так понимаю, что можно написать свою реализацию со своим сидом
Не используй только лишь хэшмапу, если важен порядок - используй вдовесок слотмапу какую-нибудь (чтобы индексы вместо значений хранить)
Ну, иногда я и слотмапу использую, но чем плохо использовать хэшмапу для итерирования?
Похоже, можно использовать rbtree для хранение элементов упорядоченно
Обсуждают сегодня