#java #jni #ffi

catch_panic

一个辅助宏,用于安全的Java-Rust互操作,它“捕获”Rust的panic并重新抛出为Java异常

1个稳定版本

1.0.0 2022年7月25日

#2183 in Rust模式

Download history 212/week @ 2024-03-13 223/week @ 2024-03-20 52/week @ 2024-03-27 66/week @ 2024-04-03 54/week @ 2024-04-10 39/week @ 2024-04-17 26/week @ 2024-04-24 11/week @ 2024-05-01 103/week @ 2024-05-08 71/week @ 2024-05-15 109/week @ 2024-05-22 31/week @ 2024-05-29 29/week @ 2024-06-05 30/week @ 2024-06-12 26/week @ 2024-06-19 13/week @ 2024-06-26

每月105次下载

MIT/Apache

12KB
119

⚾ #[catch_panic]

Crates.io Documentation License

一个辅助宏,用于安全的Java-Rust互操作,它“捕获”Rust的panic并重新抛出为Java异常。

入门

catch_panic作为依赖项添加到您的Cargo.toml

[dependencies]
catch_panic = "1.0.0"

用法

#[catch_panic]附加到JNI回调,以便将panic转换为RuntimeException

use jni::JNIEnv;
use catch_panic::catch_panic;

#[no_mangle]
#[catch_panic]
pub extern "C" fn Java_com_example_Example_panic(_env: JNIEnv) {
    panic!("everything is not fine");
}

请参阅文档以获取宏选项和更多信息。

许可证

本库可以在以下两种许可证下使用:

任选其一。

除非您明确声明,否则您根据Apache-2.0许可证定义的工作中的任何有意提交的贡献,都应按上述方式双许可,不附加任何其他条款或条件。

此库中的代码是来自HermitSocialClub/HermitRepo的代码的衍生作品,具体为以下文件:ProjectTomato/tomato_macros/src/lib.rsProjectTomato/tomato/src/util.rs。这两个文件的作者都已同意将原始代码重新许可为上述许可证。

依赖项

~1–13MB
~100K SLoC