Size: a a a

Rust — русскоговорящее сообществo

2020 September 12

NL

Nick Linker in Rust — русскоговорящее сообществo
XÆA-XII
Это были самые тяжёлые пять часов программирования в моей жизни... https://github.com/Zuzuk-null/3d_ascii_engine
―Больно глазам.
―Ты впервые ими смотришь.
источник

r

red75prime in Rust — русскоговорящее сообществo
XÆA-XII
Это были самые тяжёлые пять часов программирования в моей жизни... https://github.com/Zuzuk-null/3d_ascii_engine
А оно точно работает как нужно? Там случайно не арктангенс надо брать? Если это углы лучей к позициям символов на прямоугольной решётке, то они не должны равномерно делить fov.
источник

H

Hirrolot in Rust — русскоговорящее сообществo
Nick Linker
―Больно глазам.
―Ты впервые ими смотришь.
Какой фильм?
источник

AD

Andrew Demonov in Rust — русскоговорящее сообществo
Hirrolot
Какой фильм?
Матрица
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
XÆA-XII
Это были самые тяжёлые пять часов программирования в моей жизни... https://github.com/Zuzuk-null/3d_ascii_engine
не компилируется
источник

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
не компилируется
"А теперь это будут самые тяжёлые десять часов твоей жизни, парень."
источник

K

Kitsu in Rust — русскоговорящее сообществo
redis vs redis_async, есть ли повод предпочесть какой-то из этих крейтов? (нужен пабсаб + асинки)
источник

A

Adv0cat in Rust — русскоговорящее сообществo
#вопрос Ребят, есть вопрос, какой способ самый быстрый для чтения из u8 левых 4 бита и правых 4 бита?
Дано: let a: u8 = 0b01101001;
Необходимо: let left: u8 = 0b0110; let right: u8 = 0b1001;
Вот мои решения, но если есть лучше - рад буду послушать 😊
1. let left = a >> 4; или let left = (a & 0b11110000) >> 4;
2. let right = a << 4 >> 4; или let right = a & 0b00001111;
источник

Э

Эрик in Rust — русскоговорящее сообществo
Adv0cat
#вопрос Ребят, есть вопрос, какой способ самый быстрый для чтения из u8 левых 4 бита и правых 4 бита?
Дано: let a: u8 = 0b01101001;
Необходимо: let left: u8 = 0b0110; let right: u8 = 0b1001;
Вот мои решения, но если есть лучше - рад буду послушать 😊
1. let left = a >> 4; или let left = (a & 0b11110000) >> 4;
2. let right = a << 4 >> 4; или let right = a & 0b00001111;
fn hi_lo(u: u8) -> (u8, u8) {
(u & (!0 << 4), u & (!0 >> 4))
}


Оно всё равно компилятором будет оптимизировано. Примерно как memcpy в read_unaligned на x86_64 превращается в одно чтение по указателю.
источник

Э

Эрик in Rust — русскоговорящее сообществo
А, стоп, тебе биты надо именно в нижние засунуть?
источник

A

Adv0cat in Rust — русскоговорящее сообществo
ага)
источник

Э

Эрик in Rust — русскоговорящее сообществo
Тогда (u >> 4, u & (!0 >> 4))
источник

K

Kitsu in Rust — русскоговорящее сообществo
x86 asm rol/ror, супер быстро и немножко ансейфно
источник

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
x86 asm rol/ror, супер быстро и немножко ансейфно
А если ему кроссплатформа нужна?
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
А если ему кроссплатформа нужна?
Обязательно нужна кросплатформа 😊
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Kitsu
x86 asm rol/ror, супер быстро и немножко ансейфно
Начинается)) ансейфно и прочее 😄
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Эрик
А если ему кроссплатформа нужна?
ну в арме это тоже делается дёшево и очень быстро
источник

K

Kitsu in Rust — русскоговорящее сообществo
вообще это весьма распространенная инструкция, на том же арме почти наверняка есть
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Kitsu
вообще это весьма распространенная инструкция, на том же арме почти наверняка есть
да, там вообще битовые операции включая сдвиги однотактовые
источник

Э

Эрик in Rust — русскоговорящее сообществo
Надо на годболте с opt-level 3 посмотреть, что компилятор сделает из этих битовых штук.
источник