#panic #panic-handler #exit #abort #custom #custom-panic

nightly no-std panic-custom

一个小型的rust panic crate,允许轻松设置嵌入式或常规no_std二进制的panic行为

2个版本

0.1.1 2024年3月4日
0.1.0 2024年3月4日

#11#abort

MIT/Apache

10KB
69

Panic Custom

一个小型crate,用于自定义panic行为,主要用于嵌入式或no_std项目。

默认情况下,其在发布和调试模式下的panic行为是停止。此crate(panic_custom)允许开发人员通过提供自定义panic处理函数来自定义此行为。

用法

该crate提供了两种定义自定义panic行为的主要方式

  • 使用带有闭包参数的define_panic!宏。
  • 使用#[define_panic]过程宏。

使用define_panic!

define_panic!宏允许您通过传递闭包作为参数来定义自定义panic行为。

use panic_custom::define_panic;

const MY_CUSTOM_CONSTANT: usize = 0;

define_panic!(|info| {
    let a = &MY_CUSTOM_CONSTANT;
    let b = MY_CUSTOM_CONSTANT;

    42 // The return type is not important
});

使用#[define_panic]过程宏

#[define_panic]过程宏允许您定义自定义panic处理函数。要使用此宏,请启用proc_macros功能,并在您的Cargo.toml中包含features = "proc_macros"

[dependencies]
panic_custom = { version = "0.1", features = ["proc_macros"] }
use panic_custom::define_panic;
use core::panic::PanicInfo;

#[define_panic]
fn my_panic(info: &PanicInfo) -> ! {
    loop {}
}

特性

  • proc_macros:启用自定义panic处理的过程宏。

  • abort_on_debug:将默认行为设置为在调试模式下终止panic。默认情况下,该crate在调试模式下停止panic。

  • abort_on_release:将默认行为设置为在发布模式下终止panic。默认情况下,该crate在发布模式下停止panic。

依赖项

~215KB