#defer #raii #macro

defr

Rust中的Golang defer 语句

1 个不稳定版本

0.1.0 2022年11月20日

#18#raii

每月 26 次下载

MIT 许可证

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