in src/bindgen/ir/enumeration.rs [600:635]
fn instantiate_monomorph(
&self,
generic_values: &[GenericArgument],
library: &Library,
out: &mut Monomorphs,
) {
let mappings = self.generic_params.call(self.path.name(), generic_values);
for variant in &self.variants {
if let VariantBody::Body { ref body, .. } = variant.body {
body.instantiate_monomorph(generic_values, library, out);
}
}
let mangled_path = mangle::mangle_path(
&self.path,
generic_values,
&library.get_config().export.mangle,
);
let monomorph = Enum::new(
mangled_path,
GenericParams::default(),
self.repr,
self.variants
.iter()
.map(|v| v.specialize(generic_values, &mappings, library.get_config()))
.collect(),
self.tag.clone(),
self.cfg.clone(),
self.annotations.clone(),
self.documentation.clone(),
);
out.insert_enum(library, self, monomorph, generic_values.to_owned());
}