Αλεχ
Кстати, есть еще проще способ - дождаться репортов от пользователей
Αλεχ
https://github.com/nebgnahz/cv-rs/issues/83
Αλεχ
ваще делать ничо не надо
Marat
В llvm же вроде есть санитайзеры или они с растом не работают?
Денис
Alexey
А как ссылки на сообщение давать?
KosBeg
а на винде просто Copy Link
https://t.me/rustlang_ru/145674
Alexey
Спасибо за ответы, расточат <3
red75prime
Денис
.drain()
drain() оставляет после себя пустую коллекцию, добрый вечер
red75prime
Какая задача решается, что требуется вытаскивание произвольного элемента с сохранением остальных?
Αλεχ
red75prime
В техзадании так и написано? Заказчик хочет вытаскивать хоть какой-то элемент из хэш-мапы?
Vladimir
Cat
red75prime
И ключи обязательно могут быть не Copy и не Clone?
Денис
Денис
Денис
Cat
Денис
я не утверждаю, что это невозможно, просто я не вижу способа)
red75prime
Способ-то есть, быстрого способа нет.
Денис
долгий способ — подправить стд-либу?
Cat
кстати, можно же issue сделать! мол, "хочу так-то и так-то!"
Αλεχ
Cat
можно ещё свой язык написать, слышал работает
Cat
Αλεχ
Αλεχ
просто борроу чекер туповат для такого
Αλεχ
ты бы еще split_at_mut предложил переписать)
Денис
ну то есть сначала мы берём иммутабельную ссылку на внутренности коллекции, потом скрамливаем её мутабельному методу этой же коллекции.... звучит честно говоря на грани фолла )
Αλεχ
Αλεχ
надо делать clone на key и не выябываться
red75prime
Это не на грани фола - это UB
red75prime
если делать с ансейфом надо копировать значение ключа, и передавать ссылку на копию, потом mem::forget на копии
Денис
Vladimir
а лучше просить Clone на ключ и не выебываться
Денис
я не использую указатель после того, как он инвалидируется
Vladimir
где УБ?
а внутрях тоже не используется?
red75prime
Обращение к одному и тому же значению по мутабельной и не мутабельной ссылке - UB
Денис
Денис
и нет, это не УБ
red75prime
Да ну? И как же хэшмапа ключи сравнивает?
Денис
она сравнивает иммутабельно
Денис
а после сравнения эта волшебная ссылка не используется
red75prime
Посмотрел исходники, но гарантировать отсутствие UB не могу. Компилятор имеет право использовать для оптимизации тот факт, что &K не является частью &mut HashMap.
mAX
Товарищи, подскажите пожалуйста!
пытаюсь разобраться, сделал три таска
1) socket.incoming()...map_err...for_each
2) Interval::new...map_err...for_each
3) Delay::new...map_err...and_then
если каждый из них передать в tokio::run(...) то все работает..
как мне их запустить все сразу паралелльно?
пробовал join использовать, но не получается
Cat
А токио позволяет контроллировать, запущенны ли таски параллельно?
mAX
ну это же просто асинхронные события..почему не могут быть? я имею ввиду не параллельность по потокам, а просто как в js например
mAX
пришли данные в сокет дернул коллбек на чтение, прошел интервал по таймеру, дернул коллбек таймера
mAX
или я все неправильно тут понимаю совсем? как раз и хочу разобраться в этом
Mike
Асинхронно != Параллельно
red75prime
А что с join не получается? tokio::run(a.join3(b, c).map(|_| ()).map_err(|_| ()))
mAX
да, мне на потоки раскидывать не нужно..лучше в один наоборот, но асинхронно)
mAX
red75prime
запускать можно только таски. то есть футуры с Item = () и Error = ()
mAX
я думал join возвращает тоже таск
red75prime
он возвращает футуру с Item = (A, B, C), где A, B, C - типы результатов объединяемых футур. Для тасков это ((), (), ())
mAX
да, ошибку компилятор выдавал как раз что ((), (), ()) не ()
Денис
Vladimir
Сейфовая имплементации хешмапы?
Vladimir
Уже звучит как чтото медленное на векторах
Vladimir
indexmap?
Денис
ага
Vladimir
Оно и правда на векторах, ну видимо для той задачи нужно итерироваться быстро, в этом не плюс
Cat
<кстати, насчёт токио>
помогите выбрать примитив. смысл: запускать "задачи" асинхронно
сейчас есть трейт Command: 'static, которыйпросто вызывает execute у хэндлеров. Проблема в том, что хэндлер физически не может в 'static, поэтому было принято решение переделать на корню
Упрощённый пример того, как работает сейчас: https://play.rust-lang.org/?gist=2f5e6c791c398e79e3ac657ddebea261&version=stable&mode=debug&edition=2015
(подробный "пример": https://github.com/voider1/teleborg/blob/master/src/dispatcher.rs)
смысл в том, чтобы дать пользователю определять кастомные таски, и закидывать их в список хэндлеров
Насколько я понимаю, что-то подобное должно быть уже реализовано в токио, но пока путаюсь в понятиях и логике. Подскажите, какой примитив выбрать на замену Command?
Cat
(возможно нужен какой-нибудь актикс, но я хз опять же)
Vladimir
А что значит хендлер не может в статик?