generator
macro_rules! done { () => { ... }; }
it's a special return instruction that yield nothing but only terminate the generator safely