@@ -197,6 +197,12 @@ impl jtd_codegen::target::Target for Target {
197
197
return Ok ( Some ( s. into ( ) ) ) ;
198
198
}
199
199
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
+
200
206
state
201
207
. imports
202
208
. entry ( "serde" . into ( ) )
@@ -205,7 +211,7 @@ impl jtd_codegen::target::Target for Target {
205
211
206
212
writeln ! ( out) ?;
207
213
write ! ( out, "{}" , description( & metadata, 0 ) ) ?;
208
- writeln ! ( out, "#[derive(Serialize, Deserialize )]" ) ?;
214
+ writeln ! ( out, "#[derive({} )]" , derives . join ( ", " ) ) ?;
209
215
writeln ! ( out, "pub enum {} {{" , name) ?;
210
216
211
217
for ( index, member) in members. into_iter ( ) . enumerate ( ) {
@@ -321,6 +327,12 @@ impl jtd_codegen::target::Target for Target {
321
327
return Ok ( Some ( s. into ( ) ) ) ;
322
328
}
323
329
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
+
324
336
state
325
337
. imports
326
338
. entry ( "serde" . into ( ) )
@@ -329,7 +341,7 @@ impl jtd_codegen::target::Target for Target {
329
341
330
342
writeln ! ( out) ?;
331
343
write ! ( out, "{}" , description( & metadata, 0 ) ) ?;
332
- writeln ! ( out, "#[derive(Serialize, Deserialize )]" ) ?;
344
+ writeln ! ( out, "#[derive({} )]" , derives . join ( ", " ) ) ?;
333
345
writeln ! ( out, "#[serde(tag = {:?})]" , tag_json_name) ?;
334
346
writeln ! ( out, "pub enum {} {{" , name) ?;
335
347
@@ -362,6 +374,12 @@ impl jtd_codegen::target::Target for Target {
362
374
return Ok ( Some ( s. into ( ) ) ) ;
363
375
}
364
376
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
+
365
383
state
366
384
. imports
367
385
. entry ( "serde" . into ( ) )
@@ -370,7 +388,7 @@ impl jtd_codegen::target::Target for Target {
370
388
371
389
writeln ! ( out) ?;
372
390
write ! ( out, "{}" , description( & metadata, 0 ) ) ?;
373
- writeln ! ( out, "#[derive(Serialize, Deserialize )]" ) ?;
391
+ writeln ! ( out, "#[derive({} )]" , derives . join ( ", " ) ) ?;
374
392
375
393
if fields. is_empty ( ) {
376
394
writeln ! ( out, "pub struct {} {{}}" , name) ?;
0 commit comments