]> git.lizzy.rs Git - rust.git/blob - src/tools/rust-demangler/src/lib.rs
Rollup merge of #102445 - jmillikin:cstr-is-empty, r=Mark-Simulacrum
[rust.git] / src / tools / rust-demangler / src / lib.rs
1 use regex::Regex;
2 use rustc_demangle::demangle;
3 use std::str::Lines;
4
5 const REPLACE_COLONS: &str = "::";
6
7 pub fn create_disambiguator_re() -> Regex {
8     Regex::new(r"\[[a-f0-9]{5,16}\]::").unwrap()
9 }
10
11 pub fn demangle_lines(lines: Lines<'_>, strip_crate_disambiguators: Option<Regex>) -> Vec<String> {
12     let mut demangled_lines = Vec::new();
13     for mangled in lines {
14         let mut demangled = demangle(mangled).to_string();
15         if let Some(re) = &strip_crate_disambiguators {
16             demangled = re.replace_all(&demangled, REPLACE_COLONS).to_string();
17         }
18         demangled_lines.push(demangled);
19     }
20     demangled_lines
21 }