FFORGE//RS
← Маршрут

rust / УРОВЕНЬ 4

Цикл повторов без бюджета

ОЦЕНКА40 МИН
01

ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ

Что нужно восстановить

  • Построить обобщённый async retry для операций, создающих Future
  • Отличать отмену Future от отката уже выполненных побочных эффектов

Async-функция — это автомат состояний

Вызов async-функции создаёт Future, которая продвигается только при poll. Удаление Future прекращает дальнейший poll, но не отменяет эффекты, завершённые до последней точки приостановки.

Число попыток — часть API

Retry-контракт должен различать общее число попыток и повторы после первого вызова. `NonZeroUsize` исключает невозможный нулевой бюджет, когда возвращать ещё нечего.

КОНТРОЛЬНАЯ ТОЧКА

Что произойдёт, если вызывающий код удалит Future во время ожидания между двумя попытками?

ISOLATED RUST 1.96
src/lib.rsРЕДАКТИРОВАНИЕ

02 / РЕАЛИЗАЦИЯ

Реализуйте контракт

Реализуйте `retry`: `attempts` означает общее число вызовов, успех возвращается сразу, а последняя ошибка — после точного исчерпания бюджета. Не требуйте `Clone` для ошибок.

Инициализация редактора…
ОБЛАЧНЫЙ SANDBOXсеть выключена · 256 МБ · 12 с
1 / 64 KB
ВЫВОД
Runner ждёт отправки кода.