Маjко
Но он успел накосячить с размером данных
Cuno
Затем, что ты не хочешь UB Нафига лезть в ансейф, когда есть уже хорошая проверенная сейф абстракция?
Тут абстракция то и не нужна, исходя из задачи. Плюс на сейф кода больше будет.
պլհկ
https://docs.rs/pod/0.5.0/pod/
Маjко
Где
Ты не проверяешь, что в массиве достаточно байт же
Маjко
Слайсе*
Денис
ну, проверяет
Маjко
Изи залезть на чужую память
Маjко
В дебаге — да
Cuno
Ты не проверяешь, что в массиве достаточно байт же
debug_assert есть. Функция сама по себе unsafe. Предполагается что caller проверит размер перед кастом.
Маjко
В релизе ассерта не будет
Cuno
Маjко
Да-да
Антон
Короче, если вдруг кому-то понадобится — инстанс Applicative, реализованный для Option: https://play.rust-lang.org/?gist=daf79e721f047d7877640f7ae9b4408c&version=stable
Денис
можно и не ассерт сделать
Денис
а рантайм-ошибку
Денис
не вижу прям принципиальной проблемы в этом
Денис
более того
Денис
если это какой-то серьёзный код, то только так и можно делать
Денис
особенно если сырые данные приходят "откуда-то"
Αλεχ
или благословили на отстрел башки?
Cuno
Ответ, угу. Бинарный: есть UB или нет, т.к. я в этом пока не особо шарю. На отстрел бошки я уже сам себя благословил и мне этого достаточно, спс.
Cuno
Вообще
Cuno
странное у вас отношение к unsafe
Αλεχ
при чем тут unasfe
Αλεχ
у тебя UB
Αλεχ
а не ансейф
Cuno
у тебя UB
Где? Еще раз: предполагаем, что ассерт никогда не стреляет и порядок байт соответствующий.
Cuno
https://play.rust-lang.org/?gist=28db85e7ff7d3a1a174549a9736bce00&version=stable Байтордер даже статически проверить можно.
Αλεχ
он работает всегда
Αλεχ
а твое "мамай клянус" это не ансейф
Cuno
"мамай клянус" это ансейф и есть
分解物質
https://play.rust-lang.org/?gist=28db85e7ff7d3a1a174549a9736bce00&version=stable Байтордер даже статически проверить можно.
но не нужно, и вместо transmute нужно обычные битовые операции которые везде дадут один и тотже эффект
Cuno
ансейф как раз предполагает, что именно программист проверит инварианты
պլհկ
пасябки
Αλεχ
ансейф говорил, что ты проверил инварианты, а не забил на них болт
Anton
сам говноед
какой же все таки у нас милый и добрый чат полный самых общительных, открытых и добрых людей
Anton
аминь
Cuno
ансейф говорил, что ты проверил инварианты, а не забил на них болт
Ух, никто не забивал. Это одна unsafe "абстракция" поверх другой. Инварианты для from_bytes: T - repr(C, packed) и bytes.len() >= sizeof(T).
Cuno
Первое даже возможно статические чекается с помощью вот этой штуки: http://arcnmx.github.io/nue/nue_macros/
Αλεχ
если бы ты хотя бы вставил проверку, что endianess нужный, было бы еще куда ни шло
Cuno
https://play.rust-lang.org/?gist=28db85e7ff7d3a1a174549a9736bce00&version=stable Байтордер даже статически проверить можно.
Αλεχ
ну в таком виде ок
Денис
я кстати так и не понял, к чему был тот опрос про опенсорс
Ilya
Ты типа серьезно ищешь смысл в сообщениях в этом чатике?
Денис
кстати хочу заметить, что как правило он таки есть
Денис
трололо — тоже смысл)
Денис
в токио две недели был баг в AsyncWrite, вместо того, чтобы сбрасывать состояние "готово для записи", сбрасывалось состояние "готово для чтения", таким образом любая запись до "ewouldblock" начинала потреблять 100% цпу
Денис
и только 3 дня назад кто-то заметил
Alexander
Интересно. Потому как я использовал nanomsg но переписанную на расте и tokio (scaproust) и, если соединение отваливалась оно начинало 100% есть, врядли это оно, но немного похоже .
Денис
ну симптомы именно такие
Денис
https://github.com/tokio-rs/tokio/issues/238
Alexander
А не, там mio было.
Денис
мб тогда poll как-то не так юзается?
Alexander
Ну как-то да, там issue есть, но я уже на нормальные биндинги ушел.
Денис
и как тебе кстати nanomsg?
Alexander
Вроде работает. Я не бенчмаркал особо.
Bugworm
как перестать боятся и осилить futures?
Bugworm
точнее, где
Денис
начать юзать их
Bugworm
да чет пока не сильно помогает
Loo
да чет пока не сильно помогает
ну ты пиши сюда если какие то конкретные проблемы
Денис
ога
Bugworm
ну короче, пишу бота для тг на telebot
Bugworm
и там после каждой команды нужно что-то вернуть, в моём случае отправить сообщение
Bugworm
но та команда, которую я хочу запилить, не обязательно должна возвращать сообщение
Bugworm
так вот я думал, если какой-нить оптимальный вариант, типа как Ok(()), только для futures? А то там нихера не ясно, как вернуть сообщение, не посылая сообщение
Bugworm
или забить хер и попробовать обработать ошибки
Bugworm
ну вроде то, что нужно, за исключением того, что оно просит уточнить значения
Bugworm
а там такой ужос