Crates.io | panic-custom |
lib.rs | panic-custom |
version | 0.1.1 |
source | src |
created_at | 2024-03-04 09:26:46.28864 |
updated_at | 2024-03-04 09:44:38.090402 |
description | Small panicking rust crate that allows to easily set the behavior of panicking for embedded or regular no_std binaries. |
homepage | |
repository | https://github.com/not-forest/panic-custom |
max_upload_size | |
id | 1161458 |
size | 22,542 |
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.
The crate provides two main ways to define custom panicking behavior:
define_panic!
macro with a closure argument.#[define_panic]
procedural macro.define_panic!
MacroThe 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
});
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 {}
}
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.