2 ms·
> It knows nothing about what other Futures' poll()s the top-level Future's poll() calls in turn. That's why calling poll would be marked unsafe. When you call
by pcwalton 5y ago
> It knows nothing about what other Futures' poll()s the top-level Future's poll() calls in turn.
That's why calling poll would be marked unsafe. When you call poll() manually it's on you to uphold the invariants.
> Async-await does not obviate this problem. `let (value, _) = futures::future::select(f1, f2).await.factor_first();` has the same problem, one of the futures is going to be dropped before it resolves.
Yes, you also need to reform select.
Matthias247 has done work to flesh out what this looks like: https://github.com/Matthias247/rfcs/pull/1 https://github.com/Matthias247/rfcs/pull/1
- Arnavion 5y ago>Matthias247 has done work to flesh out what this looks like: https://github.com/Matthias247/rfcs/pull/1 https://github.com/Matthias247/rfcs/pull/1 By making a new kind of async function that cannot be called from existing async functions, I see. I started reading it with the expectation that RTCFutures would automatically spawn() themselves to enforce the RTC requirement instead of introducing a third function color. I'm pessimistic a third function color will catch on, but let's see how it goes.