mozilla / cbindgen

A project for generating C bindings from Rust code
Mozilla Public License 2.0
2.37k stars 305 forks source link

rename type by annotation #934

Open virusdefender opened 6 months ago

virusdefender commented 6 months ago

it seems that cbindgen can only rename a type by writing config file like

[export.rename]
"Feature" = "MODULE_NAME_FEATURE"

if there are multi Feature types in different modules, the generated header file only contains the last type.

so, if cbindgen can write rename rule in annotations, the problem can be solved, for example

// in crate::a

/// cbindgen:export-rename=A_FEATURE
pub enum Feature {...}

// in crate::b

/// cbindgen:export-rename=B_FEATURE
pub enum Feature {...}

there are already some similar annotations in cbindgen like cbindgen:no-export cbindgen:eq-attributes=MY_ATTRIBUTES, i think it's not difficult to implement it.

emilio commented 5 months ago

Yeah, sounds like a useful enhancement.