Defination of Task
:
pub trait Task<T> {
fn poll(wk:||=>void) Option<T>;
}
Await transformation:
await doTask();
to
let task = doTask();
let re = task.poll(wk);
while re is None {
yield return None;
re = task.poll(wk);
}
let ret = re as T!;