@@ -27,51 +27,58 @@ impl OutputMode {
2727 OutputMode :: Mut => quote ! ( mut ) ,
2828 }
2929 }
30+ }
3031
32+ #[ derive( Debug , Default ) ]
33+ pub struct GenerateConfig {
34+ pub mode : OutputMode ,
35+ }
36+
37+ impl GenerateConfig {
3138 pub fn counter_type ( & self ) -> TokenStream {
32- match self {
39+ match self . mode {
3340 OutputMode :: Ref => quote ! ( AtomicU64 ) ,
3441 OutputMode :: Mut => quote ! ( u64 ) ,
3542 }
3643 }
3744
3845 pub fn counter_init ( & self ) -> TokenStream {
39- match self {
46+ match self . mode {
4047 OutputMode :: Ref => quote ! ( AtomicU64 :: new( 0 ) ) ,
4148 OutputMode :: Mut => quote ! ( 0 ) ,
4249 }
4350 }
4451
4552 pub fn counter_increment ( & self ) -> TokenStream {
46- match self {
53+ match self . mode {
4754 OutputMode :: Ref => quote ! ( . fetch_add( 1 , Ordering :: Relaxed ) ) ,
4855 OutputMode :: Mut => quote ! ( += 1 ) ,
4956 }
5057 }
5158
5259 pub fn counter_increment_by ( & self , value : TokenStream ) -> TokenStream {
53- match self {
60+ match self . mode {
5461 OutputMode :: Ref => quote ! ( . fetch_add( #value, Ordering :: Relaxed ) ) ,
5562 OutputMode :: Mut => quote ! ( += #value) ,
5663 }
5764 }
5865
5966 pub fn counter_load ( & self ) -> TokenStream {
60- match self {
67+ match self . mode {
6168 OutputMode :: Ref => quote ! ( . load( Ordering :: Relaxed ) ) ,
6269 OutputMode :: Mut => quote ! ( ) ,
6370 }
6471 }
6572
6673 pub fn lock ( & self ) -> TokenStream {
67- match self {
74+ match self . mode {
6875 OutputMode :: Ref => quote ! ( . lock( ) . unwrap( ) ) ,
6976 OutputMode :: Mut => quote ! ( ) ,
7077 }
7178 }
7279
7380 pub fn imports ( & self ) -> TokenStream {
74- match self {
81+ match self . mode {
7582 OutputMode :: Ref => quote ! (
7683 use core:: sync:: atomic:: { AtomicU64 , Ordering } ;
7784 ) ,
@@ -80,7 +87,7 @@ impl OutputMode {
8087 }
8188
8289 pub fn mutex ( & self ) -> TokenStream {
83- match self {
90+ match self . mode {
8491 OutputMode :: Ref => quote ! (
8592 use std:: sync:: Mutex ;
8693 ) ,
@@ -89,21 +96,21 @@ impl OutputMode {
8996 }
9097
9198 pub fn testing_output_type ( & self ) -> TokenStream {
92- match self {
99+ match self . mode {
93100 OutputMode :: Ref => quote ! ( Mutex <Vec <String >>) ,
94101 OutputMode :: Mut => quote ! ( Vec <String >) ,
95102 }
96103 }
97104
98105 pub fn trait_constraints ( & self ) -> TokenStream {
99- match self {
106+ match self . mode {
100107 OutputMode :: Ref => quote ! ( ' static + Send + Sync ) ,
101108 OutputMode :: Mut => quote ! ( ' static + Send ) ,
102109 }
103110 }
104111
105112 pub fn query_mut ( & self ) -> TokenStream {
106- match self {
113+ match self . mode {
107114 OutputMode :: Ref => quote ! ( ) ,
108115 OutputMode :: Mut => quote ! (
109116 /// Used for querying and mutating the `Subscriber::ConnectionContext` on a Subscriber
@@ -119,7 +126,7 @@ impl OutputMode {
119126 }
120127
121128 pub fn query_mut_tuple ( & self ) -> TokenStream {
122- match self {
129+ match self . mode {
123130 OutputMode :: Ref => quote ! ( ) ,
124131 OutputMode :: Mut => quote ! (
125132 #[ inline]
@@ -137,7 +144,7 @@ impl OutputMode {
137144 }
138145
139146 pub fn supervisor ( & self ) -> TokenStream {
140- match self {
147+ match self . mode {
141148 OutputMode :: Ref => quote ! ( ) ,
142149 OutputMode :: Mut => quote ! (
143150 pub mod supervisor {
@@ -207,7 +214,7 @@ impl OutputMode {
207214 }
208215
209216 pub fn supervisor_timeout ( & self ) -> TokenStream {
210- match self {
217+ match self . mode {
211218 OutputMode :: Ref => quote ! ( ) ,
212219 OutputMode :: Mut => quote ! (
213220 /// The period at which `on_supervisor_timeout` is called
@@ -250,7 +257,7 @@ impl OutputMode {
250257 }
251258
252259 pub fn supervisor_timeout_tuple ( & self ) -> TokenStream {
253- match self {
260+ match self . mode {
254261 OutputMode :: Ref => quote ! ( ) ,
255262 OutputMode :: Mut => quote ! (
256263 #[ inline]
@@ -303,7 +310,7 @@ impl OutputMode {
303310 }
304311
305312 pub fn ref_subscriber ( & self , inner : TokenStream ) -> TokenStream {
306- match self {
313+ match self . mode {
307314 OutputMode :: Ref => quote ! (
308315 impl <T : Subscriber > Subscriber for std:: sync:: Arc <T > {
309316 #inner
0 commit comments