1pub fn get_last_relevant_func_name(cb_stack: &str) -> String {
2 let stack_parts = cb_stack.split('\n');
3 for f in stack_parts {
4 let mut parts = f.splitn(2, ':');
6 let opt_func_number = parts.next();
7 let name_str = parts.next().unwrap_or("").trim().to_string();
8 if let Some(func_number) = opt_func_number {
9 if let Ok(_number) = func_number.trim().parse::<i32>() {
10 if name_str.starts_with("at alloc")
12 || name_str.starts_with("alloc")
13 || name_str.starts_with("at <alloc")
14 || name_str.starts_with("at re_memory")
15 || name_str.starts_with("at<re_memory")
16 || name_str.starts_with("<re_memory")
17 || name_str.starts_with("at std::thread")
18 || name_str.starts_with("at <u8 as alloc::vec")
19 || name_str.starts_with("at <T as alloc::vec")
20 || name_str.starts_with("at __rust_alloc")
21 || name_str.starts_with("at __rust_realloc")
22 || name_str.starts_with("Error")
23 || name_str.starts_with("at imports.wbg")
24 {
25 continue;
26 }
27
28 return name_str;
29 }
30 }
31 }
32 "unkown".to_string()
33}