Use PanicHookInfo::payload_as_str now that it's stable in beta

This commit is contained in:
Zalathar 2025-09-27 18:23:18 +10:00
parent 959b450747
commit d8a1edc718

View file

@ -42,7 +42,7 @@ fn custom_panic_hook(default_hook: &PanicHook, info: &panic::PanicHookInfo<'_>)
let thread = thread::current().name().unwrap_or("(test runner)").to_owned();
let location = get_location(info);
let payload = payload_as_str(info).unwrap_or("Box<dyn Any>");
let payload = info.payload_as_str().unwrap_or("Box<dyn Any>");
let backtrace = Backtrace::capture();
writeln!(out, "\nthread '{thread}' panicked at {location}:\n{payload}").unwrap();
@ -72,19 +72,6 @@ fn get_location<'a>(info: &'a PanicHookInfo<'_>) -> &'a dyn Display {
}
}
/// FIXME(Zalathar): Replace with `PanicHookInfo::payload_as_str` when that's
/// stable in beta.
fn payload_as_str<'a>(info: &'a PanicHookInfo<'_>) -> Option<&'a str> {
let payload = info.payload();
if let Some(s) = payload.downcast_ref::<&str>() {
Some(s)
} else if let Some(s) = payload.downcast_ref::<String>() {
Some(s)
} else {
None
}
}
fn rust_backtrace_full() -> bool {
static RUST_BACKTRACE_FULL: LazyLock<bool> =
LazyLock::new(|| matches!(env::var("RUST_BACKTRACE").as_deref(), Ok("full")));