Module core::panicking [−][src]
🔬 This is a nightly-only experimental API. (core_panic
)
internal details of the implementation of the panic!
and related macros
Expand description
Panic support for libcore
The core library cannot define panicking, but it does declare panicking. This means that the functions inside of libcore are allowed to panic, but to be useful an upstream crate must define panicking for libcore to use. The current interface for panicking is:
fn panic_impl(pi: &core::panic::PanicInfo<'_>) -> !
RunThis definition allows for panicking with any general message, but it does not
allow for failing with a Box<Any>
value. (PanicInfo
just contains a &(dyn Any + Send)
,
for which we fill in a dummy value in PanicInfo::internal_constructor
.)
The reason for this is that libcore is not allowed to allocate.
This module contains a few other panicking functions, but these are just the
necessary lang items for the compiler. All panics are funneled through this
one function. The actual symbol is declared through the #[panic_handler]
attribute.
Functions
This function is used instead of panic_fmt in const eval.
The underlying implementation of libcore’s panic!
macro when no formatting is used.
The underlying implementation of libcore’s panic!
macro when formatting is used.