2 releases
0.1.1 | Mar 4, 2024 |
---|---|
0.1.0 | Mar 4, 2024 |
#1082 in Embedded development
10KB
69 lines
Panic Custom
Small crate for custom panicking behavior, primarily designed for embedded or no_std
projects.
By default, its behavior for panics is to halt in both release and debug mode.
This crate, panic_custom
, allows developers to customize this behavior by providing a custom panic handler function.
Usage
The crate provides two main ways to define custom panicking behavior:
- Using the
define_panic!
macro with a closure argument. - Using the
#[define_panic]
procedural macro.
Using define_panic!
Macro
The define_panic!
macro allows you to define custom panicking behavior by passing a closure as an argument.
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
});
Using #[define_panic] Procedural Macro
The #[define_panic]
procedural macro allows you to define a custom panic handler function.
To use this macro, enable the proc_macros
feature and include features = "proc_macros"
in your Cargo.toml
.
[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 {}
}
Features
-
proc_macros
: Enables procedural macros for custom panic handling. -
abort_on_debug
: Sets the default behavior to abort on panic in debug mode. By default, the crate halts on panic in debug mode. -
abort_on_release
: Sets the default behavior to abort on panic in release mode. By default, the crate halts on panic in release mode.
Dependencies
~230KB