50
50
/// "comma -->",
51
51
/// ]);
52
52
/// ```
53
- #[ macro_export( local_inner_macros ) ]
53
+ #[ macro_export]
54
54
macro_rules! json {
55
55
// Hide distracting implementation details from the generated rustdoc.
56
56
( $( $json: tt) +) => {
57
- json_internal!( $( $json) +)
57
+ $crate :: json_internal!( $( $json) +)
58
58
} ;
59
59
}
60
60
@@ -65,7 +65,7 @@ macro_rules! json {
65
65
//
66
66
// Changes are fine as long as `json_internal!` does not call any new helper
67
67
// macros and can still be invoked as `json_internal!($($json)+)`.
68
- #[ macro_export( local_inner_macros ) ]
68
+ #[ macro_export]
69
69
#[ doc( hidden) ]
70
70
macro_rules! json_internal {
71
71
//////////////////////////////////////////////////////////////////////////
@@ -77,57 +77,57 @@ macro_rules! json_internal {
77
77
78
78
// Done with trailing comma.
79
79
( @array [ $( $elems: expr, ) * ] ) => {
80
- json_internal_vec ![ $( $elems, ) * ]
80
+ vec ![ $( $elems, ) * ]
81
81
} ;
82
82
83
83
// Done without trailing comma.
84
84
( @array [ $( $elems: expr) ,* ] ) => {
85
- json_internal_vec ![ $( $elems) ,* ]
85
+ vec ![ $( $elems) ,* ]
86
86
} ;
87
87
88
88
// Next element is `null`.
89
89
( @array [ $( $elems: expr, ) * ] null $( $rest: tt) * ) => {
90
- json_internal!( @array [ $( $elems, ) * json_internal!( null) ] $( $rest) * )
90
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( null) ] $( $rest) * )
91
91
} ;
92
92
93
93
// Next element is `true`.
94
94
( @array [ $( $elems: expr, ) * ] true $( $rest: tt) * ) => {
95
- json_internal!( @array [ $( $elems, ) * json_internal!( true ) ] $( $rest) * )
95
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( true ) ] $( $rest) * )
96
96
} ;
97
97
98
98
// Next element is `false`.
99
99
( @array [ $( $elems: expr, ) * ] false $( $rest: tt) * ) => {
100
- json_internal!( @array [ $( $elems, ) * json_internal!( false ) ] $( $rest) * )
100
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( false ) ] $( $rest) * )
101
101
} ;
102
102
103
103
// Next element is an array.
104
104
( @array [ $( $elems: expr, ) * ] [ $( $array: tt) * ] $( $rest: tt) * ) => {
105
- json_internal!( @array [ $( $elems, ) * json_internal!( [ $( $array) * ] ) ] $( $rest) * )
105
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( [ $( $array) * ] ) ] $( $rest) * )
106
106
} ;
107
107
108
108
// Next element is a map.
109
109
( @array [ $( $elems: expr, ) * ] { $( $map: tt) * } $( $rest: tt) * ) => {
110
- json_internal!( @array [ $( $elems, ) * json_internal!( { $( $map) * } ) ] $( $rest) * )
110
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( { $( $map) * } ) ] $( $rest) * )
111
111
} ;
112
112
113
113
// Next element is an expression followed by comma.
114
114
( @array [ $( $elems: expr, ) * ] $next: expr, $( $rest: tt) * ) => {
115
- json_internal!( @array [ $( $elems, ) * json_internal!( $next) , ] $( $rest) * )
115
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( $next) , ] $( $rest) * )
116
116
} ;
117
117
118
118
// Last element is an expression with no trailing comma.
119
119
( @array [ $( $elems: expr, ) * ] $last: expr) => {
120
- json_internal!( @array [ $( $elems, ) * json_internal!( $last) ] )
120
+ $crate :: json_internal!( @array [ $( $elems, ) * $crate :: json_internal!( $last) ] )
121
121
} ;
122
122
123
123
// Comma after the most recent element.
124
124
( @array [ $( $elems: expr) ,* ] , $( $rest: tt) * ) => {
125
- json_internal!( @array [ $( $elems, ) * ] $( $rest) * )
125
+ $crate :: json_internal!( @array [ $( $elems, ) * ] $( $rest) * )
126
126
} ;
127
127
128
128
// Unexpected token after most recent element.
129
129
( @array [ $( $elems: expr) ,* ] $unexpected: tt $( $rest: tt) * ) => {
130
- json_unexpected!( $unexpected)
130
+ $crate :: json_unexpected!( $unexpected)
131
131
} ;
132
132
133
133
//////////////////////////////////////////////////////////////////////////
@@ -146,12 +146,12 @@ macro_rules! json_internal {
146
146
// Insert the current entry followed by trailing comma.
147
147
( @object $object: ident [ $( $key: tt) +] ( $value: expr) , $( $rest: tt) * ) => {
148
148
let _ = $object. insert( ( $( $key) +) . into( ) , $value) ;
149
- json_internal!( @object $object ( ) ( $( $rest) * ) ( $( $rest) * ) ) ;
149
+ $crate :: json_internal!( @object $object ( ) ( $( $rest) * ) ( $( $rest) * ) ) ;
150
150
} ;
151
151
152
152
// Current entry followed by unexpected token.
153
153
( @object $object: ident [ $( $key: tt) +] ( $value: expr) $unexpected: tt $( $rest: tt) * ) => {
154
- json_unexpected!( $unexpected) ;
154
+ $crate :: json_unexpected!( $unexpected) ;
155
155
} ;
156
156
157
157
// Insert the last entry without trailing comma.
@@ -161,78 +161,78 @@ macro_rules! json_internal {
161
161
162
162
// Next value is `null`.
163
163
( @object $object: ident ( $( $key: tt) +) ( : null $( $rest: tt) * ) $copy: tt) => {
164
- json_internal!( @object $object [ $( $key) +] ( json_internal!( null) ) $( $rest) * ) ;
164
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( null) ) $( $rest) * ) ;
165
165
} ;
166
166
167
167
// Next value is `true`.
168
168
( @object $object: ident ( $( $key: tt) +) ( : true $( $rest: tt) * ) $copy: tt) => {
169
- json_internal!( @object $object [ $( $key) +] ( json_internal!( true ) ) $( $rest) * ) ;
169
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( true ) ) $( $rest) * ) ;
170
170
} ;
171
171
172
172
// Next value is `false`.
173
173
( @object $object: ident ( $( $key: tt) +) ( : false $( $rest: tt) * ) $copy: tt) => {
174
- json_internal!( @object $object [ $( $key) +] ( json_internal!( false ) ) $( $rest) * ) ;
174
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( false ) ) $( $rest) * ) ;
175
175
} ;
176
176
177
177
// Next value is an array.
178
178
( @object $object: ident ( $( $key: tt) +) ( : [ $( $array: tt) * ] $( $rest: tt) * ) $copy: tt) => {
179
- json_internal!( @object $object [ $( $key) +] ( json_internal!( [ $( $array) * ] ) ) $( $rest) * ) ;
179
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( [ $( $array) * ] ) ) $( $rest) * ) ;
180
180
} ;
181
181
182
182
// Next value is a map.
183
183
( @object $object: ident ( $( $key: tt) +) ( : { $( $map: tt) * } $( $rest: tt) * ) $copy: tt) => {
184
- json_internal!( @object $object [ $( $key) +] ( json_internal!( { $( $map) * } ) ) $( $rest) * ) ;
184
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( { $( $map) * } ) ) $( $rest) * ) ;
185
185
} ;
186
186
187
187
// Next value is an expression followed by comma.
188
188
( @object $object: ident ( $( $key: tt) +) ( : $value: expr , $( $rest: tt) * ) $copy: tt) => {
189
- json_internal!( @object $object [ $( $key) +] ( json_internal!( $value) ) , $( $rest) * ) ;
189
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( $value) ) , $( $rest) * ) ;
190
190
} ;
191
191
192
192
// Last value is an expression with no trailing comma.
193
193
( @object $object: ident ( $( $key: tt) +) ( : $value: expr) $copy: tt) => {
194
- json_internal!( @object $object [ $( $key) +] ( json_internal!( $value) ) ) ;
194
+ $crate :: json_internal!( @object $object [ $( $key) +] ( $crate :: json_internal!( $value) ) ) ;
195
195
} ;
196
196
197
197
// Missing value for last entry. Trigger a reasonable error message.
198
198
( @object $object: ident ( $( $key: tt) +) ( : ) $copy: tt) => {
199
199
// "unexpected end of macro invocation"
200
- json_internal!( ) ;
200
+ $crate :: json_internal!( ) ;
201
201
} ;
202
202
203
203
// Missing colon and value for last entry. Trigger a reasonable error
204
204
// message.
205
205
( @object $object: ident ( $( $key: tt) +) ( ) $copy: tt) => {
206
206
// "unexpected end of macro invocation"
207
- json_internal!( ) ;
207
+ $crate :: json_internal!( ) ;
208
208
} ;
209
209
210
210
// Misplaced colon. Trigger a reasonable error message.
211
211
( @object $object: ident ( ) ( : $( $rest: tt) * ) ( $colon: tt $( $copy: tt) * ) ) => {
212
212
// Takes no arguments so "no rules expected the token `:`".
213
- json_unexpected!( $colon) ;
213
+ $crate :: json_unexpected!( $colon) ;
214
214
} ;
215
215
216
216
// Found a comma inside a key. Trigger a reasonable error message.
217
217
( @object $object: ident ( $( $key: tt) * ) ( , $( $rest: tt) * ) ( $comma: tt $( $copy: tt) * ) ) => {
218
218
// Takes no arguments so "no rules expected the token `,`".
219
- json_unexpected!( $comma) ;
219
+ $crate :: json_unexpected!( $comma) ;
220
220
} ;
221
221
222
222
// Key is fully parenthesized. This avoids clippy double_parens false
223
223
// positives because the parenthesization may be necessary here.
224
224
( @object $object: ident ( ) ( ( $key: expr) : $( $rest: tt) * ) $copy: tt) => {
225
- json_internal!( @object $object ( $key) ( : $( $rest) * ) ( : $( $rest) * ) ) ;
225
+ $crate :: json_internal!( @object $object ( $key) ( : $( $rest) * ) ( : $( $rest) * ) ) ;
226
226
} ;
227
227
228
228
// Refuse to absorb colon token into key expression.
229
229
( @object $object: ident ( $( $key: tt) * ) ( : $( $unexpected: tt) +) $copy: tt) => {
230
- json_expect_expr_comma!( $( $unexpected) +) ;
230
+ $crate :: json_expect_expr_comma!( $( $unexpected) +) ;
231
231
} ;
232
232
233
233
// Munch a token into the current key.
234
234
( @object $object: ident ( $( $key: tt) * ) ( $tt: tt $( $rest: tt) * ) $copy: tt) => {
235
- json_internal!( @object $object ( $( $key) * $tt) ( $( $rest) * ) ( $( $rest) * ) ) ;
235
+ $crate :: json_internal!( @object $object ( $( $key) * $tt) ( $( $rest) * ) ( $( $rest) * ) ) ;
236
236
} ;
237
237
238
238
//////////////////////////////////////////////////////////////////////////
@@ -254,11 +254,11 @@ macro_rules! json_internal {
254
254
} ;
255
255
256
256
( [ ] ) => {
257
- $crate:: Value :: Array ( json_internal_vec ![ ] )
257
+ $crate:: Value :: Array ( vec ![ ] )
258
258
} ;
259
259
260
260
( [ $( $tt: tt) + ] ) => {
261
- $crate:: Value :: Array ( json_internal!( @array [ ] $( $tt) +) )
261
+ $crate:: Value :: Array ( $crate :: json_internal!( @array [ ] $( $tt) +) )
262
262
} ;
263
263
264
264
( { } ) => {
@@ -268,7 +268,7 @@ macro_rules! json_internal {
268
268
( { $( $tt: tt) + } ) => {
269
269
$crate:: Value :: Object ( {
270
270
let mut object = $crate:: Map :: new( ) ;
271
- json_internal!( @object object ( ) ( $( $tt) +) ( $( $tt) +) ) ;
271
+ $crate :: json_internal!( @object object ( ) ( $( $tt) +) ( $( $tt) +) ) ;
272
272
object
273
273
} )
274
274
} ;
@@ -280,9 +280,8 @@ macro_rules! json_internal {
280
280
} ;
281
281
}
282
282
283
- // The json_internal macro above cannot invoke vec directly because it uses
284
- // local_inner_macros. A vec invocation there would resolve to $crate::vec.
285
- // Instead invoke vec here outside of local_inner_macros.
283
+ // Used by old versions of Rocket.
284
+ // Unused since https://github.com/rwf2/Rocket/commit/c74bcfd40a47b35330db6cafb88e4f3da83e0d17
286
285
#[ macro_export]
287
286
#[ doc( hidden) ]
288
287
macro_rules! json_internal_vec {
0 commit comments