Crate ast_demangle[−][src]
Expand description
ast-demangle
Parses mangled names and produces structured results.
Example:
use ast_demangle::rust_v0::display::Style; use ast_demangle::rust_v0::{Identifier, Path, Symbol}; let mangled_name = "_RNvNtCs6GSVXm7oiwY_5regex4utf811decode_utf8.llvm.1119170478327948870"; let (symbol, suffix) = Symbol::parse_from_str(mangled_name).unwrap(); // The suffix is returned. assert_eq!(suffix, ".llvm.1119170478327948870"); // The default style for displaying is the long format. assert_eq!(format!("{}", symbol), "regex[4df147058689a776]::utf8::decode_utf8"); // To omit the crate hash, use the alternate display format. assert_eq!(format!("{:#}", symbol), "regex::utf8::decode_utf8"); // Use `Symbol::display` and `Style` to specify the display style explicitly. assert_eq!(format!("{}", symbol.display(Style::Short)), "decode_utf8"); assert_eq!(format!("{}", symbol.display(Style::Normal)), "regex::utf8::decode_utf8"); assert_eq!( format!("{}", symbol.display(Style::Long)), "regex[4df147058689a776]::utf8::decode_utf8" ); // You can access the structure of the demangled symbol. assert_eq!( symbol, Symbol { version: None, path: Path::Nested { namespace: b'v', path: Path::Nested { namespace: b't', path: Path::CrateRoot(Identifier { disambiguator: 0x4df1_4705_8689_a776, name: "regex".into() }) .into(), name: Identifier { disambiguator: 0, name: "utf8".into() } } .into(), name: Identifier { disambiguator: 0, name: "decode_utf8".into() } } .into(), instantiating_crate: None } );
Modules
rust_v0 |