update_hook in std::panic - Rust
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.

## update_hook

# Function 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` #92649)
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(Box::new(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");