1 个不稳定版本
0.1.0 | 2022年11月20日 |
---|
#18 在 #raii
每月 26 次下载
4KB
defr
Rust中的Golang defer
语句。
概述
一个简单的库,提供了一个方便的宏,用于包裹带有 drop
方法的表达式。
什么是defer?
其含义可能有所不同,但在Golang的上下文中,defer
是 终结器。与C++和Rust不同,Golang没有析构函数的等价物。有关defer语句的更多信息,请参阅 defer语句。
差异
Golang中的defer调用被推入栈中,然后以后进先出的方式执行。
func main() {
defer run_4th()
defer run_3rd()
run_1st()
run_2nd()
}
defr!
块内的表达式保持过程性。
fn main() {
defr! {
run_3rd();
run_4th();
}
run_1st();
run_2nd();
}
注意
这绝对不是实现 Drop
特性的替代品。实际上,在大多数情况下,RAII模式 是一种方式。
依赖项
~1.5MB
~35K SLoC