Size: a a a

2021 January 16

IL

Ilya Lakhin in Rust Async
Спасибо!
источник
2021 January 18

f

folex in Rust Async
А если фьюча возвращает Poll::Ready, она сразу же будет снова заполлена экзекьютором? Это эквивалентно context.waker.wake()?

Что-то не могу нагуглить это в доке
источник

f

folex in Rust Async
Например в случае poll_fn, если вернуть Ready, то сразу же заново дергается функция. Хочу найти в доке этому подтверждение или объяснение какое-то
источник

D

Denis in Rust Async
> А если фьюча возвращает Poll::Ready

то больше эту фьючу нельзя никогда поллить
источник

f

folex in Rust Async
Denis
> А если фьюча возвращает Poll::Ready

то больше эту фьючу нельзя никогда поллить
ну не совсем, PollFn же можно дергать снова и снова
источник

D

Denis in Rust Async
folex
ну не совсем, PollFn же можно дергать снова и снова
нет
источник

V

Vetro in Rust Async
folex
ну не совсем, PollFn же можно дергать снова и снова
-
источник

f

folex in Rust Async
ок, значит не фьюча, стрим
источник

D

Denis in Rust Async
так, посмотрел код PollFn из futures-util, его действительно можно дёргать
источник

D

Denis in Rust Async
но в общем случае это не работает
источник

D

Denis in Rust Async
источник

f

folex in Rust Async
Denis
но в общем случае это не работает
источник

D

Denis in Rust Async
об том и речь
источник

f

folex in Rust Async
> Once a future has completed (returned Ready from poll), calling its poll method again may panic, block forever, or cause other kinds of problems; the Future trait places no requirements on the effects of such a call. However
источник

f

folex in Rust Async
может быть что-то плохое грят. а может и не быть.
источник

f

folex in Rust Async
Fused можно дергать сколько угодно, например
источник

f

folex in Rust Async
loop { select { event = fused_future => { println!("{}", event) } } }

может вполне работать как стрим
источник

f

folex in Rust Async
ну энивей :) Если забыть про фьючи, и думать про стримы. poll заново дергается, если вернуть Poll::Ready
источник

f

folex in Rust Async
А, ну понятно. Если есть потребность в следующем значении, то дернется.
источник

f

folex in Rust Async
Что-то я туплю. Спасибо!
источник