Remove `impl Display for Symbol`
When I run the following program, to_string seems to panic, while the unwrap succeeds. I'm not sure if this is intentional or not.
use cpp_demangle::Symbol;
fn main() {
let n = Symbol::new("RC4").unwrap();
let b = n.to_string();
}
Upon further inspection, the fmt function from the Display trait throws the following error when compiled with logging which causes the to_string implementation to panic.
Error getting leaf name: reference to a leaf name in a context where there is no current leaf name
When demangling it without using to_string, demangle correctly returns the Error
use cpp_demangle::Symbol;
fn main() {
let n = Symbol::new("RC4").unwrap();
let options = DemangleOptions::default();
if let Err(e) = n.demangle(&options) {
println!("{}", e);
}
}
And prints the following:
an error occurred when formatting an argument
Yeah, this is because Symbol's Display implementation can return an error for internal reasons (which is technically a violation of Display's contract). The solution to this is to remove the Display impl entirely and instead rely on Symbol::demangle, but that requires a major version bump.