2 个版本
0.1.1 | 2020年12月21日 |
---|---|
0.1.0 | 2020年12月20日 |
#30 in #exception
13KB
174 行代码(不含注释)
Continuation
基于 continuation 的控制流的纯 Rust 实现
此软件包导出两个函数,call_with_repeat_continuation
和 call_with_escape_continuation
。前者与 C 的 setjmp/
longjmp
类似,后者则允许在局部作用域内访问 C++ 风格的异常。
为什么?
老实说,我想看看这在不安全 Rust 中是否可行。结果是,在 std
和 panic = "unwind"
的存在下,这是可能的,通过使用 catch_unwind
和 resume_unwind
!根据 Rustonomicon,通过 panic
机制进行 unwinding 相比于 C++ 或 Java 等语言中的异常可能效率低下。因此,此软件包不适用于高性能使用,并且说实话,对于任何特定用途来说都没有太大用处。尽管如此,它还是挺酷的。
许可证
此代码以 MIT 许可证发布,如 LICENSE.md 或 开源倡议 所示。在我看来,这意味着我不在乎你如何使用此代码,而且我没有义务支持你这样做。话虽如此,如果你做了什么有趣的事情,我很乐意听听!