Module std::panicking

source ·
Expand description

Implementation of various bits and pieces of the panic! macro and associated runtime pieces.

Specifically, this module contains the implementation of:

  • Panic hooks
  • Executing a panic up to doing the actual implementation
  • Shims around “try”




Hook 🔒




This function is called by the panic runtime if FFI code catches a Rust panic but doesn’t rethrow it. We don’t support this case since it messes with our panic count.
This function is called by the panic runtime if it catches an exception object which does not correspond to a Rust panic.
payload is passed through another layer of raw pointers as &mut dyn Trait is not FFI-safe. BoxMeUp lazily performs allocation only when needed (this avoids allocations when using the “abort” panic runtime).
This is the entry point of panicking for the non-format-string variants of panic!() and assert!(). In particular, this is the only entry point that supports arbitrary payloads, not just format strings.
Entry point of panics from the libcore crate (panic_impl lang item).
Determines whether the current thread is unwinding because of panic.
rust_panic 🔒
An unmangled function (through rustc_std_internal_symbol) on which to slap yer breakpoints.
Central point for dispatching panics.
This is the entry point for resume_unwind. It just forwards the payload to the panic runtime.
Registers a custom panic hook, replacing any that was previously registered.
Unregisters the current panic hook, returning it.
Invoke a closure, capturing the cause of an unwinding panic if one occurs.
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.