@@ -6,7 +6,12 @@ use crate::internals::attributes::{
6
6
Symbol ,
7
7
} ;
8
8
use once_cell:: sync:: Lazy ;
9
- use syn:: { meta:: ParseNestedMeta , Ident , Token , Type } ;
9
+ use quote:: ToTokens ;
10
+ use syn:: {
11
+ meta:: ParseNestedMeta ,
12
+ parse:: { Parse , ParseStream } ,
13
+ Ident , Token , Type ,
14
+ } ;
10
15
11
16
use self :: with_funcs:: { WithFuncs , WITH_FUNCS_FIELD_PARSE_MAP } ;
12
17
@@ -52,13 +57,31 @@ pub static SCHEMA_FIELD_PARSE_MAP: Lazy<BTreeMap<Symbol, Box<ParseFn>>> = Lazy::
52
57
/**
53
58
Struct describes an entry like `order_param => override_type`, e.g. `K => <K as TraitName>::Associated`
54
59
*/
55
- #[ derive( Clone , syn_derive :: Parse , syn_derive :: ToTokens ) ]
60
+ #[ derive( Clone ) ]
56
61
pub struct ParameterOverride {
57
62
pub order_param : Ident ,
58
63
arrow_token : Token ! [ =>] ,
59
64
pub override_type : Type ,
60
65
}
61
66
67
+ impl Parse for ParameterOverride {
68
+ fn parse ( input : ParseStream ) -> Result < Self , syn:: Error > {
69
+ Ok ( ParameterOverride {
70
+ order_param : input. parse ( ) ?,
71
+ arrow_token : input. parse ( ) ?,
72
+ override_type : input. parse ( ) ?,
73
+ } )
74
+ }
75
+ }
76
+
77
+ impl ToTokens for ParameterOverride {
78
+ fn to_tokens ( & self , tokens : & mut proc_macro2:: TokenStream ) {
79
+ self . order_param . to_tokens ( tokens) ;
80
+ self . arrow_token . to_tokens ( tokens) ;
81
+ self . override_type . to_tokens ( tokens) ;
82
+ }
83
+ }
84
+
62
85
#[ allow( unused) ]
63
86
#[ derive( Default , Clone ) ]
64
87
pub ( crate ) struct Attributes {
0 commit comments