Size: a a a

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

2021 June 27

Э

Эрик in Rust — русскоговорящее сообщество
А я скажу, что: у нас в стриме останется непрочитанная строка, которую мы при следующем вызове parse_line попытаемся прочитать как u32, и у нас всё пойдёт в жопу.
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Ничего не должно быть в терминах асинка. Я авейт воспринимаю как yield из c#.
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
А если буквально как в примере выше исполняется, тогда это не асинк, а хрень какая-то.
источник

Э

Эрик in Rust — русскоговорящее сообщество
У тебя в (2) else бранча не вызывается, если что, из-за кенсела.
источник

Э

Эрик in Rust — русскоговорящее сообщество
Не буквально. Если хочешь буквально, иди читай большие статьи, а я тут на пальцах рассказываю в неком псевдо-коде.
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
while cancel_flag.get() { yield return better_luck_next_time } else { do_computation()? }
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Так себе представлял
источник

Э

Эрик in Rust — русскоговорящее сообщество
Я не понимаю сишарп, соре. Могу кинуть тебе статью по футурам, из которых понятно что здесь происходит.
источник

Э

Эрик in Rust — русскоговорящее сообщество
Но на мой взгляд, проще запомнить, что селект == жопа
источник

n

n1 in Rust — русскоговорящее сообщество
Да, я тоже как interruption point воспринимаю, я вот не могу понять что же не так…
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Селект нинужон, если он таски полностью перезапускает в случае их незавершения к моменту прерывания
источник

Э

Эрик in Rust — русскоговорящее сообщество
Ну и дропать футуру не дождавшись результата — тоже жопа. Но дроп футуры это и есть кенсел.
источник

Э

Эрик in Rust — русскоговорящее сообщество
Если ты про "panic safety" прочёл в растономиконе, то ты примерно должен понять.
источник

n

n1 in Rust — русскоговорящее сообщество
Скинь, пожалуйста, я потом почитаю. Спасибо, в любом случае)
источник

n

n1 in Rust — русскоговорящее сообщество
Ещё ничего не читал, думал тут все проще и это я туплю
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Паник сейфти вроде знаю, но всё равно как-то не клеится одно с другим
источник

Э

Эрик in Rust — русскоговорящее сообщество
Нет, канселинг и паник сейфти — это хардкор. Только если тебе не надо знать ничего про паник сейфти, если ты не используешь unsafe, то с кенселингом всё сложнее, потому что он везде в асинке есть.
источник

Э

Эрик in Rust — русскоговорящее сообщество
Если знаешь, то скажи мне, что именно в этой функции не так.

fn panic_safety(v: &mut Vec<bool>, f: impl Fn() -> bool) {
unsafe {
v.reserve(1);
let len = v.len();
v.set_len(len + 1);
v.as_mut_ptr().add(len).write(f());
}
}
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
При панике доступ к невалидной памяти
источник

Э

Эрик in Rust — русскоговорящее сообщество
В каком месте паника?
источник