///|
pub fn async_run(f : async () -> Unit noraise) -> Unit = "%async.run"
///|
/// `suspend` 会中断当前协程的运行。
/// `suspend` 会接受一个回调函数,并让这个回调函数来操作中断的协程
pub async fn[T, E : Error] suspend(
// `f` 是负责操作中断的协程的回调函数
f : (
// `f` 的第一个参数用于继续运行被中断的协程
(T) -> Unit,
// `f` 的第二个参数用于取消被中断的协程。
// 取消会被表示为在中断处抛出错误
(E) -> Unit,
) -> Unit,
) -> T raise E = "%async.suspend"