2022-10-29:go 语言中的 defer 能非常方便地处理资源释放问题,rust 语言里如何实现 defer 功能呢?
2022-10-29:go 语言中的 defer 能非常方便地处理资源释放问题,rust 语言里如何实现 defer 功能呢?
答案 2022-10-29:
rust 里有时候你也必须用 defer,别说是设计上的问题,因为这种情况你肯定会遇到。
有些时候第三方的结构体,析构函数是不满足需求的,但你也不可能直接修改源码。
第三方的结构体是无法直接实现 Drop 的,因此只能另外定义结构体来包裹第三方的结构体,然后实现 drop,这样就能实现 defer 功能。这是装饰器模式。
现在已经有现成的轮子,直接用就行。轮子有 scopeguard 和 xjbutil。
scopeguard 案例代码如下:
复制代码
xjbutil 案例代码如下:
复制代码
结果如下:
版权声明: 本文为 InfoQ 作者【福大大架构师每日一题】的原创文章。
原文链接:【http://xie.infoq.cn/article/a98a7031710e8ea71ca835c75】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论