Cat
пока не поиграешься со всеми тремя -- так и не узнаешь, что пизже
основываясь на твоих фразах можно создать канал @rust_explore_by_yourself /offtop
Dårk
trial-and-error approach
Anton
знаешь, возможно стоит формулировать такие влпросы на algliyskom. и дублировать на SO.
Ну какбы, а нахуя мне вообще этот раст чатик тогда нужен
Dårk
норм методика освоения программирования. главное не бояться писать "одноразовый код" - который не жалко будет выкинуть или переписать
Cat
trial-and-error approach
impl Error for Trial { fn is_error() -> bool { return random_bool(); } }
Anton
ну мне хотябы промежуточный вариант нужен все же
Anton
чтото хоть чуть более менее приличное и все такое
Anton
у других совсем не тот подход который юзаю я
Anton
тоесть например в том же последнем тулките люди вообще все компоненты ручками пишут для вебрендера включая калькуляцию
Денис
не благодари https://play.rust-lang.org/?gist=c74549de79cc0302e2efb51154b461c6&version=stable&mode=debug
for_each пройдётся по абсолютно всем элементам итератора, что противоречит с условием ^_^
Cat
(((
Cat
зато красивее
Денис
ну естественно, убрал один бранч =)))
Cuno
for_each пройдётся по абсолютно всем элементам итератора, что противоречит с условием ^_^
Судя по задаче, оно и скорее всего и так и так по всем элементам пройдется.
Денис
Судя по задаче, оно и скорее всего и так и так по всем элементам пройдется.
есть разница между "скорее всего", "в худшем случае", "в лучшем случае", и "в среднем")
Денис
сделай ранний выход из итерации при mand_headers.is_empty()
ты пробовал когда-нибудь сделать ранний выход из итерации?)
Cat
ладно, это будет близко к обычному циклу
Денис
да, отлично не_получалось
хотя наверное можно обернуть всё в ошпн и делать take_while
Anton
ТОваричи кто нить наталкивался, на "взвешеные списки" или точнее вектора в нашем случае, напромер мне при поиске нужно выбрать запись с наибольшим количеством совпадений атриббутов реализую я это через структуру Item { weight: usize, data: T } Все найденые элементы заносятся в вектор, чем больше совпадений атриббутов, тем больше вес, в конце сортирую вектор по ключу, и наверху оказывается запись с самым большим весом - мож есть готовое чтобы не велосипедить?
Денис
если тебе нужен один элемент, просто делай поиск
Cat
ну и есть сортировка по ключу
Cuno
ты пробовал когда-нибудь сделать ранний выход из итерации?)
https://play.rust-lang.org/?gist=6d84271043e8074253c579da8e5be0d9&version=stable&mode=debug
Денис
шаре не нажал)
Cat
ага
Anton
ну и есть сортировка по ключу
ну это я ща и делаю, я имел ввиду - есть ли готовый контейнер куда можно загонять элемент с весом
Маjко
Есть в std
Anton
BinaryHeap и кастомный Ord для твоего элемента?
О, хип выглядит подходяще, спасибо
Денис
fixed
блин, да, так гораздо лучше) можно пытаться удалить из сета, даже если он пустой
Денис
в конце кстати всегда можно false возвращать
Денис
короче вот так уже выглядит адекватно — https://play.rust-lang.org/?gist=ea2eec128d80faf8822d4754d004a1af&version=stable&mode=debug — особенно если макрос hashset! заюзать всем спасибо)
Anton
BinaryHeap и кастомный Ord для твоего элемента?
Блин он требует Eq, Как следствие для всех элементов структуры
Маjко
Блин он требует Eq, Как следствие для всех элементов структуры
Реализуй руками только для нужного, по тому, что тебе надо сравнивать в хипе
Маjко
Для всех поди только при автодерайве требует
Anton
impl Eq for PaxMatch {}
Anton
Пардон derive сделал
Anton
он там на все Eq захотел
Anton
так норм
-__-
Если нужно один раз в конце найти максимум, то зачем вообще сортировать?
Anton
Ну есть BestMatch и OtherMatches
Cuno
Если тебе только максимум нужен, то проще и быстрее обычный линейный поиск же
-__-
Если нужно один раз отсортировать и после этого не нужно апдейтить, то быстрее таки просто отсортировать, чем кучу строить.
Anton
Если нужно один раз отсортировать и после этого не нужно апдейтить, то быстрее таки просто отсортировать, чем кучу строить.
1. Получаем список откудато 2. Передаем его кудато где проставляется вес 3. Сортируем и отображаем примерно так BestMatch, и see other отсортированые в обратном порядке веса
Anton
Лучший вариант?
Anton
Хип, Тупой вектор?
Маjко
И так и так nlogn
Маjко
Иначе придется копировать вектор в хип
Маjко
Хотя если хип умеет перестраиваться из готового вектора, не копируя память, то монопенисуально
Маjко
Итерироваться по хипу или вектору в порядке убывания — легче по отсортированному вектору
Маjко
За logn
Anton
Ну я к тому что если изначально создать хип, потом передавать на взвещивание - и в процесе будет менятся вес, каждый раз будет перестраиватся
Маjко
Сортировка за O(n) — это отсортированный массив)
Cuno
nlogn*
Я имел в виду если бы вставка в Heap была бы O(1)
Маjко
Ну я к тому что если изначально создать хип, потом передавать на взвещивание - и в процесе будет менятся вес, каждый раз будет перестраиватся
Ну да, по твоему описанию тебе лучше вектор взять и отсортировать когда нужно, если дальше вставок не будет
Маjко
Там есть удобный sort_by и не нужно писать свой Ord/Eq
Anton
Блин
Anton
все таки тип Any охуенен
Anton
решает целую кучу проблем разом
Anton
была жесткая проблема в том как же мне родному хранить данные в контексте элемента
Anton
проставлять дженериком тип данных сверху это выглядит ну дюже адово, да и неудобно толком, ибо к элементу каждый может присунуть все что хочет
Anton
а тут есть тип any, все красиво, все изолировано, и вся отвественность за хранимые данные на пользователе
Anton
и извлекать данные просто
Anton
каеф