Path: blob/main/crates/environ/src/demangling.rs
1691 views
//! Helpers for demangling function names.12/// Demangles a single function name into a user-readable form.3///4/// Currently supported: Rust/C/C++ function names.5pub fn demangle_function_name(writer: &mut impl core::fmt::Write, name: &str) -> core::fmt::Result {6#[cfg(feature = "demangle")]7if let Ok(demangled) = rustc_demangle::try_demangle(name) {8return write!(writer, "{demangled}");9} else if let Ok(symbol) = cpp_demangle::Symbol::new(name) {10let options = cpp_demangle::DemangleOptions::default();11if let Ok(demangled) = symbol.demangle(&options) {12return write!(writer, "{demangled}");13}14}1516write!(writer, "{name}")17}1819/// Demangles a function name if it's provided, or returns a unified representation based on the20/// function index otherwise.21pub fn demangle_function_name_or_index(22writer: &mut impl core::fmt::Write,23name: Option<&str>,24func_id: usize,25) -> core::fmt::Result {26match name {27Some(name) => demangle_function_name(writer, name),28None => write!(writer, "<wasm function {func_id}>"),29}30}313233