coroutine: intro of coroutine<>::pull_type, coroutine<>::push_type