Size: a a a

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

2021 June 26

goldstein опять in Rust — русскоговорящее сообщество
Общий сахар для CPS решил бы эту проблему раз и навсегда
источник

goldstein опять in Rust — русскоговорящее сообщество
Кто block_on? У меня в крейте нет экзекьютора.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообщество
while fut.poll().is_pending() {}
источник

goldstein опять in Rust — русскоговорящее сообщество
А это токио не понравится
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Токио вообще мало что нравится.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообщество
А, понял. Синхронный контекст внутри асинхронного.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Если оно за пределами в токио.
источник

goldstein опять in Rust — русскоговорящее сообщество
cps_func(|(obj1, obj2)| {
   // code
})

трансформируется в
let (obj1, obj2) = cps_func().continue;
// code
источник

goldstein опять in Rust — русскоговорящее сообщество
Решает скоупы, решает асинкдроп, позволяет активно использовать трюк с инвариантными лайфтаймами
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообщество
проясни, пожалуйста
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Я о волшебных токиевских фьючерах не работающих на не-токиевских экзекуторах. И наоборот.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообщество
Ну, это справедливо для любых футур, ждущих какого-то внешнего стейта. В частности любых IO или таймеров из любой библиотеки.
источник

goldstein опять in Rust — русскоговорящее сообщество
Соответственно, если ты хочешь объект с асинкдропом, ты просто ему вместо обычного конструктора делаешь cps-конструктор, который потом за ним всё подчищает.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообщество
Но с другой стороны, ты можешь одновременно врубить стейт от разных библиотек (например одновременно зайти в несколько токио рантаймов), поэтому не так уж все и плохо
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Без гарантий того что запхнутая не в тот экзекутор фьюча не поломает всё неопределённым образом это не звучит как что-то хорошее.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообщество
Ну, будет просто паника
источник

goldstein опять in Rust — русскоговорящее сообщество
И это простейший кусок синтаксического сахара, тривиальный, легко объясняемый, не требующий гатов и прочих извращений в системе типов.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
.continue в таком случае будет создавать скоуп для всего что ниже?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
В котором будет эта континуация?
источник

goldstein опять in Rust — русскоговорящее сообщество
Да, .continue делает замыкание из всего, что ниже, и передаёт его последним аргументом в функцию.
источник