1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use std::fmt::Write; pub fn setup() { if cfg!(release) { std::panic::set_hook(box |info| { if cfg!(detailed_panic) { let mut message = "program panicked".to_owned(); if let Some(location) = info.location() { write!(&mut message, " at {}:{}", location.file(), location.line()).ok(); } if let Some(payload) = info.payload().downcast_ref::<&str>() { write!(&mut message, " with payload: {}", payload).ok(); } println!("{}", message); } std::process::exit(-1); }); } }