Size: a a a

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

2020 March 03

Ct

Casual tears in Rust — русскоговорящее сообществo
polunin.ai
Ну вообще насколько я знаю из кучки байт получать структуру плохая идея, так как компилятор может расставлять поля по своему усмотрению
Это одна из проблем, да, но там еще других достаточно
источник

P

Pavel in Rust — русскоговорящее сообществo
polunin.ai
Ну вообще насколько я знаю из кучки байт получать структуру плохая идея, так как компилятор может расставлять поля по своему усмотрению
#[repr(packed, C)]
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Например выравнивание или "невалидные" значения (для bool например)
источник

P

Pavel in Rust — русскоговорящее сообществo
другое дело, что если она не выровнена, то ссылки на её поля — уб
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Pavel
#[repr(packed, C)]
С repr(packed) сейчас кажется можно сегфолты ловить из за выравнивания
источник

P

Pavel in Rust — русскоговорящее сообществo
Casual tears
С repr(packed) сейчас кажется можно сегфолты ловить из за выравнивания
именно
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
Только не сегфолты а хардфолты наверн
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Dollar Føølish
Только не сегфолты а хардфолты наверн
источник

m

mAX in Rust — русскоговорящее сообществo
Товарищи, подскажите пожалуйста!
если ми пишем "run()?", то в случае ошибки вернет ошибку выше
а если мне в случае ошибки нужно Ok() вернуть можно как-то компактно написать вот такую штуку?
let r = match run() { Ok(v) => v, Err(err) => return Ok(vec![]) }
источник

P

Pavel in Rust — русскоговорящее сообществo
ну, это не проблема, если юзать read_unaligned по указателю, но ссылки всё ломают
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
mAX
Товарищи, подскажите пожалуйста!
если ми пишем "run()?", то в случае ошибки вернет ошибку выше
а если мне в случае ошибки нужно Ok() вернуть можно как-то компактно написать вот такую штуку?
let r = match run() { Ok(v) => v, Err(err) => return Ok(vec![]) }
run().and_then(|| other_code).unwrap_or_default() ?
источник

m

mAX in Rust — русскоговорящее сообществo
Спасибо! буду разбираться)
источник

∅ч

∅ ч in Rust — русскоговорящее сообществo
Alex Zhukovsky
дизель?
так там же не более, чем

.set(table::field.eq())...
источник

∅ч

∅ ч in Rust — русскоговорящее сообществo
а я хочу, чтоб во время конпеляции генерировался sql код, и сам обновлял данные в модели локально
источник

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
∅ ч
так там же не более, чем

.set(table::field.eq())...
эмм, а что еще нужно?
источник

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
что за данные модели локально?
источник

∅ч

∅ ч in Rust — русскоговорящее сообществo
Alex Zhukovsky
что за данные модели локально?
поля
источник

∅ч

∅ ч in Rust — русскоговорящее сообществo
update!(model, {
  a: 0,
  b: 0,
  c: 0
})

сгенерирует sql update код, и сделает функцию(или инлайн), для записывания данных в поля и сохранение данных в дб
источник

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
не понял, сюда должны данные из бд прилететь или в бд улететь? И всё это на этапе компиляции?
источник

∅ч

∅ ч in Rust — русскоговорящее сообществo
в ларавелях к примеру ты можешь написать something.save(), и все измененные поля сохранятся,  но это требует либо знать, какие поля были изменены, либо сохранять все. а тут прямо на моменте конпеляции сгенерируется код, который установит значения, и сохранит это все в дб
источник