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
对 libcore 的 panic 支持
核心库无法定义 panic,但可以声明 panic。 这意味着 libcore 内部的函数被允许用于 panic,但上游 crate 有用时必须定义 panic 以供 libcore 使用。 当前的 panic 接口是:
fn panic_impl(pi: &core::panic::PanicInfo<'_>) -> !Run此定义允许对任何常规消息进行 panic,但不允许 Box<Any> 值失败。
(PanicInfo 仅包含一个 &(dyn Any + Send),我们在其中将其填充为 PanicInfo::internal_constructor 中的虚拟值。) 其原因是不允许 libcore 进行分配。
该模块还包含其他一些紧急函数,但这只是编译器必需的 lang 项。所有 panics 都通过此函数进行了分配。
实际符号通过 #[panic_handler] 属性声明。
Functions
const_panic_fmtExperimental
在 const eval 中使用此函数代替 panic_fmt。
panicExperimental
不使用格式时,libcore 的 panic! 宏的底层实现。
panic_displayExperimental
panic_fmtExperimental
带有格式化消息的 panic 的入口点。
panic_strExperimental