Function creusot_contracts::std::panic::update_hook
source · pub fn update_hook<F>(hook_fn: F)where
F: Fn(&(dyn Fn(&PanicHookInfo<'_>) + Send + Sync + 'static), &PanicHookInfo<'_>) + Sync + Send + 'static,
🔬This is a nightly-only experimental API. (
panic_update_hook
)Expand description
Atomic combination of take_hook
and set_hook
. Use this to replace the panic handler with
a new panic handler that does something and then executes the old handler.
§Panics
Panics if called from a panicking thread.
§Examples
The following will print the custom message, and then the normal output of panic.
ⓘ
#![feature(panic_update_hook)]
use std::panic;
// Equivalent to
// let prev = panic::take_hook();
// panic::set_hook(move |info| {
// println!("...");
// prev(info);
// );
panic::update_hook(move |prev, info| {
println!("Print custom message and execute panic handler as usual");
prev(info);
});
panic!("Custom and then normal");