in Source/Shared/arcana/threading/coroutine.h [371:391]
inline auto switch_to(SchedulerT& scheduler)
{
class scheduler_awaiter
{
public:
scheduler_awaiter(SchedulerT& scheduler) : m_scheduler(scheduler) {}
bool await_ready() { return false; }
void await_resume() {}
void await_suspend(std::experimental::coroutine_handle<> coroutine)
{
m_scheduler([coroutine = std::move(coroutine)]
{
coroutine.resume();
});
}
private:
SchedulerT& m_scheduler;
};
return scheduler_awaiter{ scheduler };
}