11//! Code in config 
22use  serde:: { Deserialize ,  Serialize } ; 
33
4+ const  PICK_DEFAULT :  & str  = "${fid}.${slug}" ; 
45fn  default_pick ( )  -> String  { 
5-     "${fid}.${slug}" . into ( ) 
6+     PICK_DEFAULT . into ( ) 
67} 
78
9+ const  SUBMISSION_DEFAULT :  & str  = "${fid}.${slug}.${sid}.${ac}" ; 
810fn  default_submission ( )  -> String  { 
9-     "${fid}.${slug}.${sid}.${ac}" . into ( ) 
11+     SUBMISSION_DEFAULT . into ( ) 
12+ } 
13+ 
14+ fn  is_default_pick ( t :  & String )  -> bool  { 
15+     t == PICK_DEFAULT 
16+ } 
17+ 
18+ fn  is_default_submission ( t :  & String )  -> bool  { 
19+     t == SUBMISSION_DEFAULT 
20+ } 
21+ 
22+ fn  is_default_string ( t :  & String )  -> bool  { 
23+     t. is_empty ( ) 
24+ } 
25+ fn  is_default_bool ( t :  & bool )  -> bool  { 
26+     !t
1027} 
1128
1229/// Code config 
@@ -18,26 +35,29 @@ pub struct Code {
1835    pub  editor_args :  Option < Vec < String > > , 
1936    #[ serde( rename( serialize = "editor-envs" ) ,  alias = "editor-envs" ,  default ) ]  
2037    pub  editor_envs :  Option < Vec < String > > , 
21-     #[ serde( default ,  skip_serializing ) ]  
38+     #[ serde( default ,  skip_serializing_if =  "is_default_bool" ) ]  
2239    pub  edit_code_marker :  bool , 
23-     #[ serde( default ,  skip_serializing ) ]  
40+     #[ serde( default ,  skip_serializing_if =  "is_default_string" ) ]  
2441    pub  start_marker :  String , 
25-     #[ serde( default ,  skip_serializing ) ]  
42+     #[ serde( default ,  skip_serializing_if =  "is_default_string" ) ]  
2643    pub  end_marker :  String , 
2744    #[ serde( rename( serialize = "inject_before" ) ,  alias = "inject_before" ,  default ) ]  
2845    pub  inject_before :  Option < Vec < String > > , 
2946    #[ serde( rename( serialize = "inject_after" ) ,  alias = "inject_after" ,  default ) ]  
3047    pub  inject_after :  Option < Vec < String > > , 
31-     #[ serde( default ,  skip_serializing ) ]  
48+     #[ serde( default ,  skip_serializing_if =  "is_default_bool" ) ]  
3249    pub  comment_problem_desc :  bool , 
33-     #[ serde( default ,  skip_serializing ) ]  
50+     #[ serde( default ,  skip_serializing_if =  "is_default_string" ) ]  
3451    pub  comment_leading :  String , 
35-     #[ serde( default ,  skip_serializing ) ]  
52+     #[ serde( default ,  skip_serializing_if =  "is_default_bool" ) ]  
3653    pub  test :  bool , 
3754    pub  lang :  String , 
38-     #[ serde( default  = "default_pick" ,  skip_serializing ) ]  
55+     #[ serde( default  = "default_pick" ,  skip_serializing_if =  "is_default_pick" ) ]  
3956    pub  pick :  String , 
40-     #[ serde( default  = "default_submission" ,  skip_serializing) ]  
57+     #[ serde(  
58+         default  = "default_submission" ,  
59+         skip_serializing_if = "is_default_submission"  
60+     ) ]  
4161    pub  submission :  String , 
4262} 
4363
0 commit comments