Skip to content

not-forest/panic-custom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Small panicking rust crate that allows to easily set the behavior of panicking for embedded or regular no_std binaries.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages