wire_framework/utils/
panic_extractor.rs

1use tokio::task::JoinError;
2
3pub fn try_extract_panic_message(err: JoinError) -> String {
4    if err.is_panic() {
5        let panic = err.into_panic();
6        if let Some(panic_string) = panic.downcast_ref::<&'static str>() {
7            panic_string.to_string()
8        } else if let Some(panic_string) = panic.downcast_ref::<String>() {
9            panic_string.to_string()
10        } else {
11            "Unknown panic".to_string()
12        }
13    } else {
14        "Cancelled task".to_string()
15    }
16}