core_panic
)Expand description
Panic support for core
The core library cannot define panicking, but it does declare panicking. This means that the functions inside of core are allowed to panic, but to be useful an upstream crate must define panicking for core 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 core 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.
Enums
- AssertKindExperimental
Functions
- assert_failedExperimentalInternal function for
assert_eq!
andassert_ne!
macros - Non-generic version of the above functions, to avoid code bloat.
- assert_matches_failedExperimentalInternal function for
assert_match!
- const_panic_fmtExperimentalThis function is used instead of panic_fmt in const eval.
- panicExperimentalThe underlying implementation of core’s
panic!
macro when no formatting is used. - Panic because we cannot unwind out of a function.
- panic_displayExperimental
- panic_fmtExperimentalThe entry point for panicking with a formatted message.
- panic_nounwindExperimentalLike
panic
, but without unwinding and track_caller to reduce the impact on codesize. - panic_nounwind_fmtExperimentalLike
panic_fmt
, but for non-unwinding panics. - panic_strExperimental
- unreachable_displayExperimental