#[repr(transparent)]
#[derive(Debug, Clone)]
pub struct PanicPolicy {
inner: arty_executor::PanicPolicy,
}
impl PanicPolicy {
#[must_use]
pub const fn shutdown() -> Self {
Self {
inner: arty_executor::PanicPolicy::Shutdown,
}
}
#[must_use]
pub const fn ignore() -> Self {
Self {
inner: arty_executor::PanicPolicy::Ignore,
}
}
pub(crate) fn into_executor_policy(self) -> arty_executor::PanicPolicy {
self.inner
}
}
impl Default for PanicPolicy {
fn default() -> Self {
Self::shutdown()
}
}
#[cfg(test)]
#[cfg_attr(coverage_nightly, coverage(off))] mod tests {
use super::*;
#[test]
fn default_policy_starts_shutdown() {
assert!(matches!(
PanicPolicy::default().into_executor_policy(),
arty_executor::PanicPolicy::Shutdown
));
}
#[test]
fn ignore_policy_keeps_the_runtime_running() {
assert!(matches!(
PanicPolicy::ignore().into_executor_policy(),
arty_executor::PanicPolicy::Ignore
));
}
}