@Override
	public DemangledObject demangle(MangledContext context) {
		DemanglerOptions options = context.getOptions();
		RustDemanglerOptions rustOptions = getRustOptions(options);

		String mangled = context.getMangled();
		if (skip(mangled, rustOptions)) {
			return null;
		}

		String demangled = null;

		if (rustOptions.getDemanglerFormat() == RustDemanglerFormat.LEGACY ||
			rustOptions.getDemanglerFormat() == RustDemanglerFormat.AUTO) {
			demangled = RustDemanglerLegacy.demangle(mangled);
		}

		if (rustOptions.getDemanglerFormat() == RustDemanglerFormat.V0 ||
			(rustOptions.getDemanglerFormat() == RustDemanglerFormat.AUTO && demangled == null)) {
			demangled = RustDemanglerV0.demangle(mangled);
		}

		RustDemanglerParser parser = new RustDemanglerParser();
		DemangledObject demangledObject = parser.parse(mangled, demangled);

		if (options.applyCallingConvention() &&
			demangledObject instanceof DemangledFunction demangledFunction) {
			demangledFunction.setCallingConvention(CompilerSpec.CALLING_CONVENTION_rustcall);
		}

		demangledObject.setMangledContext(context);
		return demangledObject;
	}
A class for demangling debug symbols created using rustc
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/demangler/RustDemangler.java