Αλεχ
Кстати, есть еще проще способ - дождаться репортов от пользователей
Αλεχ
https://github.com/nebgnahz/cv-rs/issues/83
Αλεχ
ваще делать ничо не надо
Marat
В llvm же вроде есть санитайзеры или они с растом не работают?
Alexey
А как ссылки на сообщение давать?
Cat
А как ссылки на сообщение давать?
с телефона хз как, с пеки — пкм -> copy msg link
Anton
А как ссылки на сообщение давать?
На маке ПКМ и есть кнопка Copy Message Link
KosBeg
а на винде просто Copy Link https://t.me/rustlang_ru/145674
Alexey
Спасибо за ответы, расточат <3
KosBeg
Спасибо за ответы, расточат <3
звертайся, Пес) завжди раді подомогти 😆
Денис
.drain()
drain() оставляет после себя пустую коллекцию, добрый вечер
red75prime
Какая задача решается, что требуется вытаскивание произвольного элемента с сохранением остальных?
Денис
Какая задача решается, что требуется вытаскивание произвольного элемента с сохранением остальных?
там вроде описано :) но да, хотя "произвольного" надо понимать не в смысле "наперёд заданного", а в смысле "хоть какого-нибудь"
red75prime
В техзадании так и написано? Заказчик хочет вытаскивать хоть какой-то элемент из хэш-мапы?
red75prime
И ключи обязательно могут быть не Copy и не Clone?
Денис
https://doc.rust-lang.org/std/vec/struct.Vec.html#method.swap_remove м?
ну тут вызов заключается в том, чтобы сделать HashMap :)
Αλεχ
ну тут вызов заключается в том, чтобы сделать HashMap :)
google "rust" "hashmap" -. ctrl+C -> ctrl +V
Денис
google "rust" "hashmap" -. ctrl+C -> ctrl +V
ну заимплементь этот трейт для хэшмапы без ансейфа :)
Cat
какое тз? какой заказчик?
тз от заказчика заказчик с тз ещё вопросы?
Денис
тз от заказчика заказчик с тз ещё вопросы?
да: как решить задачу без использования ансейфа?
Cat
тз от заказчика заказчик с тз ещё вопросы?
для всего остального есть... кхм
Денис
я не утверждаю, что это невозможно, просто я не вижу способа)
red75prime
Способ-то есть, быстрого способа нет.
Денис
долгий способ — подправить стд-либу?
Cat
кстати, можно же issue сделать! мол, "хочу так-то и так-то!"
Денис
эм, а в чем проблема?
ну это правда очень долгий способ :) и ненадёжный
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
А что с join не получается? tokio::run(a.join3(b, c).map(|_| ()).map_err(|_| ()))
ух, вот так все получается!!! вижу вывод в консоль! Спасибо, буду разбираться.. tokio::run(task_interval.join3(task_delay, server_socket).map(|_| ()).map_err(|_| ())); я .map(|_| ()).map_err(|_| ()) не делал!
red75prime
запускать можно только таски. то есть футуры с Item = () и Error = ()
mAX
я думал join возвращает тоже таск
red75prime
он возвращает футуру с Item = (A, B, C), где A, B, C - типы результатов объединяемых футур. Для тасков это ((), (), ())
mAX
да, ошибку компилятор выдавал как раз что ((), (), ()) не ()
Vladimir
ну заимплементь этот трейт для хэшмапы без ансейфа :)
Чего бы не попридумывать, чтобы было "безопасно и на типах". Это часть той вчерашней задачи с не пустой хешмапой?
Денис
Чего бы не попридумывать, чтобы было "безопасно и на типах". Это часть той вчерашней задачи с не пустой хешмапой?
да) я на самом деле нашёл сейфовую имплементацию хэшмапы, в которой есть метод pop :)
Vladimir
Сейфовая имплементации хешмапы?
Vladimir
Уже звучит как чтото медленное на векторах
Денис
Уже звучит как чтото медленное на векторах
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/knucleotide.html Rust #8 на ней сделан
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
А что значит хендлер не может в статик?