@@ -197,6 +197,12 @@ impl jtd_codegen::target::Target for Target {
197197 return Ok ( Some ( s. into ( ) ) ) ;
198198 }
199199
200+ let mut derives = vec ! [ "Serialize" , "Deserialize" ] ;
201+
202+ if let Some ( s) = metadata. get ( "rustCustomDerive" ) . and_then ( |v| v. as_str ( ) ) {
203+ derives. extend ( s. split ( "," ) ) ;
204+ }
205+
200206 state
201207 . imports
202208 . entry ( "serde" . into ( ) )
@@ -205,7 +211,7 @@ impl jtd_codegen::target::Target for Target {
205211
206212 writeln ! ( out) ?;
207213 write ! ( out, "{}" , description( & metadata, 0 ) ) ?;
208- writeln ! ( out, "#[derive(Serialize, Deserialize )]" ) ?;
214+ writeln ! ( out, "#[derive({} )]" , derives . join ( ", " ) ) ?;
209215 writeln ! ( out, "pub enum {} {{" , name) ?;
210216
211217 for ( index, member) in members. into_iter ( ) . enumerate ( ) {
@@ -321,6 +327,12 @@ impl jtd_codegen::target::Target for Target {
321327 return Ok ( Some ( s. into ( ) ) ) ;
322328 }
323329
330+ let mut derives = vec ! [ "Serialize" , "Deserialize" ] ;
331+
332+ if let Some ( s) = metadata. get ( "rustCustomDerive" ) . and_then ( |v| v. as_str ( ) ) {
333+ derives. extend ( s. split ( "," ) ) ;
334+ }
335+
324336 state
325337 . imports
326338 . entry ( "serde" . into ( ) )
@@ -329,7 +341,7 @@ impl jtd_codegen::target::Target for Target {
329341
330342 writeln ! ( out) ?;
331343 write ! ( out, "{}" , description( & metadata, 0 ) ) ?;
332- writeln ! ( out, "#[derive(Serialize, Deserialize )]" ) ?;
344+ writeln ! ( out, "#[derive({} )]" , derives . join ( ", " ) ) ?;
333345 writeln ! ( out, "#[serde(tag = {:?})]" , tag_json_name) ?;
334346 writeln ! ( out, "pub enum {} {{" , name) ?;
335347
@@ -362,6 +374,12 @@ impl jtd_codegen::target::Target for Target {
362374 return Ok ( Some ( s. into ( ) ) ) ;
363375 }
364376
377+ let mut derives = vec ! [ "Serialize" , "Deserialize" ] ;
378+
379+ if let Some ( s) = metadata. get ( "rustCustomDerive" ) . and_then ( |v| v. as_str ( ) ) {
380+ derives. extend ( s. split ( "," ) ) ;
381+ }
382+
365383 state
366384 . imports
367385 . entry ( "serde" . into ( ) )
@@ -370,7 +388,7 @@ impl jtd_codegen::target::Target for Target {
370388
371389 writeln ! ( out) ?;
372390 write ! ( out, "{}" , description( & metadata, 0 ) ) ?;
373- writeln ! ( out, "#[derive(Serialize, Deserialize )]" ) ?;
391+ writeln ! ( out, "#[derive({} )]" , derives . join ( ", " ) ) ?;
374392
375393 if fields. is_empty ( ) {
376394 writeln ! ( out, "pub struct {} {{}}" , name) ?;
0 commit comments