технически раст разруливает ситуацию когда встречает внутри функции .await, как захватывается контекст функции, например:
async fn foo(&self) {
let mut val = 1;
let result = some_other_async().await?;
self.some_field = 5;
val = 2
}
Как раст запоминает значениеv val=1, как он работает с self? о нем же тоже надо как-то помнить.
2. что не так, как правильно? Картинка далее.
async вроде как генерит машину состояний, похожую на скрин, рассахаренная сигнатура будет выглядеть как -> impl Future. В лямбде val с &self хранится, вестимо.
Создается условно объект с полями с контекстом
Обсуждают сегодня