inline auto switch_to()

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 };
    }