@@ -3575,7 +3575,7 @@ impl EnumBuilder {
3575
3575
ctx : & BindgenContext ,
3576
3576
rust_ty : & syn:: Type ,
3577
3577
// Optionally place the enum bindings in a module
3578
- module : Option < syn :: Ident > ,
3578
+ module : Option < Ident > ,
3579
3579
enum_variants : & [ EnumVariantInfo ] ,
3580
3580
result : & mut CodegenResult < ' _ > ,
3581
3581
) -> proc_macro2:: TokenStream {
@@ -3813,9 +3813,27 @@ impl CodeGenerator for Enum {
3813
3813
3814
3814
let variation = self . computed_enum_variation ( ctx, item) ;
3815
3815
self . codegen_variation ( ctx, result, item, None , variation) ;
3816
- // let module = ctx.rust_ident("rustified_enum");
3817
- // Todo: add an option for additional rustified enum
3818
- // self.codegen_variation(ctx, result, item, Some(module), EnumVariation::Rust {non_exhaustive: true});
3816
+ // todo: expose options for:
3817
+ // - non-exhaustive
3818
+ // - disambiguation: module-name / rename enum ( callback ?)
3819
+ // - Variant-Casing
3820
+ // perhaps we just make the additional enum a callback?
3821
+ if ctx
3822
+ . options ( )
3823
+ . safe_rust_enums
3824
+ . matches ( item. canonical_name ( ctx) )
3825
+ {
3826
+ let module = ctx. rust_ident ( "rustified_enum" ) ;
3827
+ self . codegen_variation (
3828
+ ctx,
3829
+ result,
3830
+ item,
3831
+ Some ( module) ,
3832
+ EnumVariation :: Rust {
3833
+ non_exhaustive : true ,
3834
+ } ,
3835
+ ) ;
3836
+ }
3819
3837
}
3820
3838
}
3821
3839
@@ -3831,7 +3849,7 @@ impl Enum {
3831
3849
ctx : & BindgenContext ,
3832
3850
result : & mut CodegenResult < ' _ > ,
3833
3851
item : & Item ,
3834
- module : Option < syn :: Ident > ,
3852
+ module : Option < Ident > ,
3835
3853
variation : EnumVariation ,
3836
3854
) {
3837
3855
debug ! ( "<Enum as CodeGenerator>::codegen: item = {item:?}" ) ;
0 commit comments