Size: a a a

2021 November 26

RP

Roman Proskuryakov in Rust Async
о да, спасибо =)
источник

RP

Roman Proskuryakov in Rust Async
рад, что документация развивается, и не надо перелопачивать тонны кода и ставить гипотезы, чтобы разобраться в подобного рода вещах
источник

d

diabolo in Rust Async
здесь еще посмотри - хорошая инфа

https://os.phil-opp.com/async-await/
источник

RP

Roman Proskuryakov in Rust Async
ого. знатно
источник
2021 December 04

УМ

Убийца Мамонтов... in Rust Async
привет, я мимопроходил, учу Токио. стало интересно, можно ли каким-то образом реализовать трекинг "прогресса" футур? то есть мы имеем какую-то футуру с 7ю await-ами, мы её поллим и видим, что она ещё Pending, но при этом можем скзаать, что в ней 5 из 7ми await-ов уже прошли.
источник

DF

Dollar Føølish in Rust Async
а откуда нам знать что там 7 авейтов а не 99?)
источник

DF

Dollar Føølish in Rust Async
ведь каждый авейт может произвольное число раз вернуть Pending, хоть бесконечное
источник

УМ

Убийца Мамонтов... in Rust Async
это понимаю
источник

УМ

Убийца Мамонтов... in Rust Async
это не очень
источник

DF

Dollar Føølish in Rust Async
у тебя рантайм поллит твою футуру когда захочет
источник

RP

Roman Proskuryakov in Rust Async
можно. делаешь

struct TrackingFuture<F: Future> {
  future: F.
  num_pending: usize,
}

impl Future for TrackingFuture {
  fn poll(...) {
      let res = self.future.poll(...);
      if res is pending {
        self.num_pending += 1;
      }
      res
  }
}
источник

RP

Roman Proskuryakov in Rust Async
к примеру, можно туда и название футуры закинуть и какой-нибудь id генератор и сливать инфу в прометеус
источник

П

Пух in Rust Async
Если реализуешь футуру ручками, то реализуй для нее дебаг, например
источник

УМ

Убийца Мамонтов... in Rust Async
в общем из того что я вижу можно сказать, что
стандартный тип футуры нужно расширить из
pub enum Poll<T> {
   Ready(T),
   Pending,
}
в
pub enum Poll<T, P = ()> {
   Ready(T),
   Pending(P),
}
что даст возможность возвращать что угодно (в т.ч. инфу о прогрессе) из Pending футур. а ещё сломает весь существующий асинк код
источник

УМ

Убийца Мамонтов... in Rust Async
как именно?
источник

RP

Roman Proskuryakov in Rust Async
так я тебе выше показал
источник

П

Пух in Rust Async
impl Future for MyEnum
источник

MB

Mikail Bagishov in Rust Async
Тут явно не это нужно
источник

MB

Mikail Bagishov in Rust Async
Руками await-ы разворачивать сомнительное удовольствие
источник

П

Пух in Rust Async
Но можно же :D
источник