#exception #control-flow #experimental

nightly continuation

实验性基于catch_unwind的continuation

2 个版本

0.1.1 2020年12月21日
0.1.0 2020年12月20日

#30 in #exception

MIT 许可证

13KB
174 行代码(不含注释)

Continuation

基于 continuation 的控制流的纯 Rust 实现

此软件包导出两个函数,call_with_repeat_continuationcall_with_escape_continuation。前者与 C 的 setjmp/longjmp 类似,后者则允许在局部作用域内访问 C++ 风格的异常。

为什么?

老实说,我想看看这在不安全 Rust 中是否可行。结果是,在 stdpanic = "unwind" 的存在下,这是可能的,通过使用 catch_unwindresume_unwind!根据 Rustonomicon,通过 panic 机制进行 unwinding 相比于 C++ 或 Java 等语言中的异常可能效率低下。因此,此软件包不适用于高性能使用,并且说实话,对于任何特定用途来说都没有太大用处。尽管如此,它还是挺酷的。

许可证

此代码以 MIT 许可证发布,如 LICENSE.md开源倡议 所示。在我看来,这意味着我不在乎你如何使用此代码,而且我没有义务支持你这样做。话虽如此,如果你做了什么有趣的事情,我很乐意听听!

无运行时依赖