#[cfg(feature = "std")]
use crate::{Any, Box, PanicHookInfo, PanicUnwindSafe, ThreadResult};
use ::std::panic::{catch_unwind, panic_any, resume_unwind, set_hook, take_hook};
#[doc = crate::_tags!(namespace)]
#[doc = crate::_doc_location!("code/panic")]
#[cfg_attr(nightly_doc, doc(cfg(feature = "std")))]
#[derive(Debug)]
pub struct Panic;
#[cfg(feature = "std")]
#[cfg_attr(nightly_doc, doc(cfg(feature = "std")))]
impl Panic {
pub fn catch<F: FnOnce() -> R + PanicUnwindSafe, R>(f: F) -> ThreadResult<R> {
catch_unwind(f)
}
pub fn any<M: 'static + Any + Send>(msg: M) -> ! {
panic_any(msg)
}
pub fn resume(payload: Box<dyn Any + Send>) -> ! {
resume_unwind(payload)
}
pub fn set_hook(hook: Box<dyn Fn(&PanicHookInfo<'_>) + Sync + Send + 'static>) {
set_hook(hook);
}
pub fn take_hook() -> Box<dyn Fn(&PanicHookInfo<'_>) + Sync + Send + 'static> {
take_hook()
}
}