macro_rules! defer {
($func:block) => { ... };
($func:expr) => { ... };
{ $($func:expr$(;)?)+ } => { ... };
}Expand description
Defers evaluation of a block of code until the end of the scope. Sort of LIFO(last-in, first-out queue) If you encounter references to resources that cannot mut more than 2 times, try nesting RefCell and then use.borrow() and.borrow_mut().
延迟代码块的执行直到作用域结束。 类似于 LIFO(后进先出队列) 如果遇到不能 mut 超过 2 次的资源引用,尝试嵌套 RefCell 然后使用 .borrow() 和 .borrow_mut()。
for example:
use dark_std::defer;
//LIFO, so it will print: guard: 3 guard: 2 guard: 1
fn main(){
defer!({
println!("guard: 1");
});
defer!(||{
println!("guard: 2");
});
defer!{
println!("guard: 3");
}
}