andrei
тогда я не понял почему это плохо)
поставь либу ну поставь либу!
andrei
че как не нпм
adam
тогда я не понял почему это плохо)
какая логика, такие и стандарты
分解物質
պլհկ
Спасибо оптимизатору за наше счастливое детство
Filipp
Мне показалось или я тут видел крутой стикер с растом?
Filipp
Screenshot (05:36PM, сент. 14, 2017)
Anonymous
а раст так делает?
Safort
Що це за дебагер асмовский?
Cuno
https://godbolt.org/
Safort
https://godbolt.org/
А, так это онлайн. Я просто ищу себе норм дебагер под линупс и уж было нормальному интерфейсу обрабовался.
պլհկ
https://github.com/cs01/gdbgui ))
Сережа
Если ты про поддержку гдб в иде, то она есть в vs code. Native debugging расширение. gdb с 7.12 вроде бы официально поддерживает Rust. В Intellij плагин с растом поддерживает дебаггинг. Есть еще к Eclipse RustDT с поддержкой.
Safort
Пасиб, коданы.
分解物質
очень странно
分解物質
а нет, не странно
分解物質
в первом случае весь массив передаётся одним регистром и rustc/llvm это оптимизирует в один bswap, когда данные передаёшь через указатель он их боится и не видит что можно приминить bswap. вот вам ваш fear of pointers
分解物質
почти
блин, у меня кнопка share не работает
分解物質
pub fn read_be1(c: [u8; 4]) -> u32 { (c[0] as u32) << 24 | (c[1] as u32) << 16 | (c[2] as u32) << 8 | c[3] as u32 } pub fn read_le1(c: [u8; 4]) -> u32 { (c[3] as u32) << 24 | (c[2] as u32) << 16 | (c[1] as u32) << 8 | c[0] as u32 } pub fn read_be2(c: &[u8; 4]) -> u32 { (c[0] as u32) << 24 | (c[1] as u32) << 16 | (c[2] as u32) << 8 | c[3] as u32 } pub fn read_le2(c: &[u8; 4]) -> u32 { (c[3] as u32) << 24 | (c[2] as u32) << 16 | (c[1] as u32) << 8 | c[0] as u32 } pub unsafe fn read_be3(c: *const u8) -> u32 { (*c as u32) << 24 | (*c.offset(1) as u32) << 16 | (*c.offset(2) as u32) << 8 | *c.offset(3) as u32 } pub unsafe fn read_le3(c: *const u8) -> u32 { (*c.offset(3) as u32) << 24 | (*c.offset(2) as u32) << 16 | (*c.offset(1) as u32) << 8 | *c as u32 } pub fn read_be4(c: &[u8]) -> u32 { (c[0] as u32) << 24 | (c[1] as u32) << 16 | (c[2] as u32) << 8 | c[3] as u32 } pub fn read_le4(c: &[u8]) -> u32 { (c[3] as u32) << 24 | (c[2] as u32) << 16 | (c[1] as u32) << 8 | c[0] as u32 }
Marat
нет
Разве?
Marat
с unsafe тоже не оптимизирует?
Marat
А говно тогда
分解物質
Разве?
тут ownership/lifetimes вообще ни как не влияют
Vladimir
та да, косячный оптимизатор
Vladimir
кстати самое убогое выглядит pub fn read_be4(c: &[u8]) -> u32 { (c[0] as u32) << 24 | (c[1] as u32) << 16 | (c[2] as u32) << 8 | c[3] as u32 }
Vladimir
он вообще 4 прыжка
Vladimir
test rax, rax je .LBB4_5 cmp rax, 1 je .LBB4_6 cmp rax, 3 jb .LBB4_7 je .LBB4_8
分解物質
они сократятся до одного если сначала брать c[3]
Vladimir
да, я про это же
分解物質
всё ради тачного места паники в бэктрейсе мда
Vladimir
жизнь боль
Vladimir
кстати с get_unchecked аналогичного * const что логично
分解物質
Alex
Неплохой прогресс
Vladimir
забавно что с копи типами, явно заставить соптимизировать компилятор не так то просто например такое, генерирует код идентичный le1 pub fn read_le5(c: &[u8;4]) -> u32 { let c:[u8;4] = *c; read_le1(c) } а уже такое, внезапно, не понимает что от него хотят. pub fn read_le5(c: &[u8;4]) -> u32 { let c:[u8;4] = *c; (c[3] as u32) << 24 | (c[2] as u32) << 16 | (c[1] as u32) << 8 | c[0] as u32 }
Safort
Трансляция митапчика https://www.youtube.com/watch?v=BCsPcsmRhOM
dukeBarman
Трансляция митапчика https://www.youtube.com/watch?v=BCsPcsmRhOM
спасибо большое! А то не удалось посетить
Маjко
Сенкс
Anonymous
tfw забыл про митап
Anonymous
><
Мерль
тогда я не понял почему это плохо)
Велосипед и костыль, есть готовое решение, где ты не напортачишь
Мерль
поставь либу ну поставь либу!
Используй std, чо как в Go, м?
Anonymous
byteorder имеет много ненужных мне фич
Anonymous
намного проще просто написать у себя функцию
Мерль
byteorder имеет много ненужных мне фич
... которые тебе никак не мешают Делай как хочешь, но пилить свой велосипед для решения проблемы, которая решена в std, увеличивая вероятность накосячить -- это прямо образец говнокода
Anonymous
в std?
Мерль
в std?
В стандартной библиотеке есть же готовый способ
Anonymous
где?
Мерль
где?
В bytes
Мерль
Или каком-то из под модулей? Сек
Anonymous
🤔
Мерль
А нет, извиняюсь, это byteorder, а она не в std
Мерль
heck
Anonymous
ну так
Anonymous
я и говорю что мне не нравится тянуть либу для столь простой задачи
Мерль
ну так
Пили костыль, лел
Мерль
Чо уж там
Anonymous
здесь понятия "вероятность накосячить" и "костыли" неприменимы просто
Мерль
здесь понятия "вероятность накосячить" и "костыли" неприменимы просто
Имхо очень даже Я много раз видел, что люди ошибаются именно в таких вот мелких хреновинах, потому что это последнее место, где ожидаешь подвох (
Anonymous
мне кажется го оставил плохие последствия на твоем мозге
Мерль
мне кажется го оставил плохие последствия на твоем мозге
Вот то, что предлагаешь делать - - это прям goway Очередное свидетельство того, что язык не так уж важен, люди всегда найдут способ выстрелить себе в колено <_<
Anonymous
нет никакого goway
Anonymous
этот язык ничего не изобрел
分解物質
к слову rust тоже уже всё было в Cyclone
Oleg
Дискриминация по языкам, дожили
Anonymous
к слову rust тоже уже всё было в Cyclone
борроу чекер тоже был в cyclone?
Anonymous
судя по rust reference нет
分解物質
ок