1 | #![allow (unused_macros)] |
2 | |
3 | macro_rules! feature { |
4 | ( |
5 | #![$meta:meta] |
6 | $($item:item)* |
7 | ) => { |
8 | $( |
9 | #[cfg($meta)] |
10 | #[cfg_attr(docsrs, doc(cfg($meta)))] |
11 | $item |
12 | )* |
13 | } |
14 | } |
15 | |
16 | /// Enables Windows-specific code. |
17 | /// Use this macro instead of `cfg(windows)` to generate docs properly. |
18 | macro_rules! cfg_windows { |
19 | ($($item:item)*) => { |
20 | $( |
21 | #[cfg(any(all(doc, docsrs), windows))] |
22 | #[cfg_attr(docsrs, doc(cfg(windows)))] |
23 | $item |
24 | )* |
25 | } |
26 | } |
27 | |
28 | /// Enables Unix-specific code. |
29 | /// Use this macro instead of `cfg(unix)` to generate docs properly. |
30 | macro_rules! cfg_unix { |
31 | ($($item:item)*) => { |
32 | $( |
33 | #[cfg(any(all(doc, docsrs), unix))] |
34 | #[cfg_attr(docsrs, doc(cfg(unix)))] |
35 | $item |
36 | )* |
37 | } |
38 | } |
39 | |
40 | /// Enables unstable Windows-specific code. |
41 | /// Use this macro instead of `cfg(windows)` to generate docs properly. |
42 | macro_rules! cfg_unstable_windows { |
43 | ($($item:item)*) => { |
44 | $( |
45 | #[cfg(all(any(all(doc, docsrs), windows), tokio_unstable))] |
46 | #[cfg_attr(docsrs, doc(cfg(all(windows, tokio_unstable))))] |
47 | $item |
48 | )* |
49 | } |
50 | } |
51 | |
52 | /// Enables `enter::block_on`. |
53 | macro_rules! cfg_block_on { |
54 | ($($item:item)*) => { |
55 | $( |
56 | #[cfg(any( |
57 | feature = "fs" , |
58 | feature = "net" , |
59 | feature = "io-std" , |
60 | feature = "rt" , |
61 | ))] |
62 | $item |
63 | )* |
64 | } |
65 | } |
66 | |
67 | /// Enables internal `AtomicWaker` impl. |
68 | macro_rules! cfg_atomic_waker_impl { |
69 | ($($item:item)*) => { |
70 | $( |
71 | #[cfg(any( |
72 | feature = "net" , |
73 | feature = "process" , |
74 | feature = "rt" , |
75 | feature = "signal" , |
76 | feature = "time" , |
77 | ))] |
78 | #[cfg(not(loom))] |
79 | $item |
80 | )* |
81 | } |
82 | } |
83 | |
84 | macro_rules! cfg_aio { |
85 | ($($item:item)*) => { |
86 | $( |
87 | #[cfg(all(any(docsrs, target_os = "freebsd" ), feature = "net" ))] |
88 | #[cfg_attr(docsrs, |
89 | doc(cfg(all(target_os = "freebsd" , feature = "net" ))) |
90 | )] |
91 | $item |
92 | )* |
93 | } |
94 | } |
95 | |
96 | macro_rules! cfg_fs { |
97 | ($($item:item)*) => { |
98 | $( |
99 | #[cfg(feature = "fs" )] |
100 | #[cfg_attr(docsrs, doc(cfg(feature = "fs" )))] |
101 | $item |
102 | )* |
103 | } |
104 | } |
105 | |
106 | macro_rules! cfg_io_blocking { |
107 | ($($item:item)*) => { |
108 | $( #[cfg(any( |
109 | feature = "io-std" , |
110 | feature = "fs" , |
111 | all(windows, feature = "process" ), |
112 | ))] $item )* |
113 | } |
114 | } |
115 | |
116 | macro_rules! cfg_io_driver { |
117 | ($($item:item)*) => { |
118 | $( |
119 | #[cfg(any( |
120 | feature = "net" , |
121 | all(unix, feature = "process" ), |
122 | all(unix, feature = "signal" ), |
123 | ))] |
124 | #[cfg_attr(docsrs, doc(cfg(any( |
125 | feature = "net" , |
126 | all(unix, feature = "process" ), |
127 | all(unix, feature = "signal" ), |
128 | ))))] |
129 | $item |
130 | )* |
131 | } |
132 | } |
133 | |
134 | macro_rules! cfg_io_driver_impl { |
135 | ( $( $item:item )* ) => { |
136 | $( |
137 | #[cfg(any( |
138 | feature = "net" , |
139 | all(unix, feature = "process" ), |
140 | all(unix, feature = "signal" ), |
141 | ))] |
142 | $item |
143 | )* |
144 | } |
145 | } |
146 | |
147 | macro_rules! cfg_not_io_driver { |
148 | ($($item:item)*) => { |
149 | $( |
150 | #[cfg(not(any( |
151 | feature = "net" , |
152 | all(unix, feature = "process" ), |
153 | all(unix, feature = "signal" ), |
154 | )))] |
155 | $item |
156 | )* |
157 | } |
158 | } |
159 | |
160 | macro_rules! cfg_io_readiness { |
161 | ($($item:item)*) => { |
162 | $( |
163 | #[cfg(feature = "net" )] |
164 | $item |
165 | )* |
166 | } |
167 | } |
168 | |
169 | macro_rules! cfg_io_std { |
170 | ($($item:item)*) => { |
171 | $( |
172 | #[cfg(feature = "io-std" )] |
173 | #[cfg_attr(docsrs, doc(cfg(feature = "io-std" )))] |
174 | $item |
175 | )* |
176 | } |
177 | } |
178 | |
179 | macro_rules! cfg_io_util { |
180 | ($($item:item)*) => { |
181 | $( |
182 | #[cfg(feature = "io-util" )] |
183 | #[cfg_attr(docsrs, doc(cfg(feature = "io-util" )))] |
184 | $item |
185 | )* |
186 | } |
187 | } |
188 | |
189 | macro_rules! cfg_not_io_util { |
190 | ($($item:item)*) => { |
191 | $( #[cfg(not(feature = "io-util" ))] $item )* |
192 | } |
193 | } |
194 | |
195 | macro_rules! cfg_loom { |
196 | ($($item:item)*) => { |
197 | $( #[cfg(loom)] $item )* |
198 | } |
199 | } |
200 | |
201 | macro_rules! cfg_not_loom { |
202 | ($($item:item)*) => { |
203 | $( #[cfg(not(loom))] $item )* |
204 | } |
205 | } |
206 | |
207 | macro_rules! cfg_macros { |
208 | ($($item:item)*) => { |
209 | $( |
210 | #[cfg(feature = "macros" )] |
211 | #[cfg_attr(docsrs, doc(cfg(feature = "macros" )))] |
212 | $item |
213 | )* |
214 | } |
215 | } |
216 | |
217 | macro_rules! cfg_unstable_metrics { |
218 | ($($item:item)*) => { |
219 | $( |
220 | #[cfg(tokio_unstable)] |
221 | #[cfg_attr(docsrs, doc(cfg(tokio_unstable)))] |
222 | $item |
223 | )* |
224 | } |
225 | } |
226 | |
227 | /// Some metrics require 64-bit atomics. |
228 | macro_rules! cfg_64bit_metrics { |
229 | ($($item:item)*) => { |
230 | $( |
231 | #[cfg(target_has_atomic = "64" )] |
232 | #[cfg_attr(docsrs, doc(cfg(target_has_atomic = "64" )))] |
233 | $item |
234 | )* |
235 | } |
236 | } |
237 | |
238 | macro_rules! cfg_no_64bit_metrics { |
239 | ($($item:item)*) => { |
240 | $( |
241 | #[cfg(not(target_has_atomic = "64" ))] |
242 | $item |
243 | )* |
244 | } |
245 | } |
246 | |
247 | macro_rules! cfg_not_unstable_metrics { |
248 | ($($item:item)*) => { |
249 | $( |
250 | #[cfg(not(tokio_unstable))] |
251 | $item |
252 | )* |
253 | } |
254 | } |
255 | |
256 | macro_rules! cfg_not_rt_and_metrics_and_net { |
257 | ($($item:item)*) => { |
258 | $( #[cfg(not(all(feature = "net" , feature = "rt" , tokio_unstable)))]$item )* |
259 | } |
260 | } |
261 | |
262 | macro_rules! cfg_net_or_process { |
263 | ($($item:item)*) => { |
264 | $( |
265 | #[cfg(any(feature = "net" , feature = "process" ))] |
266 | #[cfg_attr(docsrs, doc(cfg(any(feature = "net" , feature = "process" ))))] |
267 | $item |
268 | )* |
269 | } |
270 | } |
271 | |
272 | macro_rules! cfg_net { |
273 | ($($item:item)*) => { |
274 | $( |
275 | #[cfg(feature = "net" )] |
276 | #[cfg_attr(docsrs, doc(cfg(feature = "net" )))] |
277 | $item |
278 | )* |
279 | } |
280 | } |
281 | |
282 | macro_rules! cfg_net_unix { |
283 | ($($item:item)*) => { |
284 | $( |
285 | #[cfg(all(unix, feature = "net" ))] |
286 | #[cfg_attr(docsrs, doc(cfg(all(unix, feature = "net" ))))] |
287 | $item |
288 | )* |
289 | } |
290 | } |
291 | |
292 | macro_rules! cfg_net_windows { |
293 | ($($item:item)*) => { |
294 | $( |
295 | #[cfg(all(any(all(doc, docsrs), windows), feature = "net" ))] |
296 | #[cfg_attr(docsrs, doc(cfg(all(windows, feature = "net" ))))] |
297 | $item |
298 | )* |
299 | } |
300 | } |
301 | |
302 | macro_rules! cfg_process { |
303 | ($($item:item)*) => { |
304 | $( |
305 | #[cfg(feature = "process" )] |
306 | #[cfg_attr(docsrs, doc(cfg(feature = "process" )))] |
307 | #[cfg(not(loom))] |
308 | #[cfg(not(target_os = "wasi" ))] |
309 | $item |
310 | )* |
311 | } |
312 | } |
313 | |
314 | macro_rules! cfg_process_driver { |
315 | ($($item:item)*) => { |
316 | #[cfg(unix)] |
317 | #[cfg(not(loom))] |
318 | cfg_process! { $($item)* } |
319 | } |
320 | } |
321 | |
322 | macro_rules! cfg_not_process_driver { |
323 | ($($item:item)*) => { |
324 | $( |
325 | #[cfg(not(all(unix, not(loom), feature = "process" )))] |
326 | $item |
327 | )* |
328 | } |
329 | } |
330 | |
331 | macro_rules! cfg_signal { |
332 | ($($item:item)*) => { |
333 | $( |
334 | #[cfg(feature = "signal" )] |
335 | #[cfg_attr(docsrs, doc(cfg(feature = "signal" )))] |
336 | #[cfg(not(loom))] |
337 | #[cfg(not(target_os = "wasi" ))] |
338 | $item |
339 | )* |
340 | } |
341 | } |
342 | |
343 | macro_rules! cfg_signal_internal { |
344 | ($($item:item)*) => { |
345 | $( |
346 | #[cfg(any(feature = "signal" , all(unix, feature = "process" )))] |
347 | #[cfg(not(loom))] |
348 | $item |
349 | )* |
350 | } |
351 | } |
352 | |
353 | macro_rules! cfg_signal_internal_and_unix { |
354 | ($($item:item)*) => { |
355 | #[cfg(unix)] |
356 | cfg_signal_internal! { $($item)* } |
357 | } |
358 | } |
359 | |
360 | macro_rules! cfg_not_signal_internal { |
361 | ($($item:item)*) => { |
362 | $( |
363 | #[cfg(any(loom, not(unix), not(any(feature = "signal" , all(unix, feature = "process" )))))] |
364 | $item |
365 | )* |
366 | } |
367 | } |
368 | |
369 | macro_rules! cfg_sync { |
370 | ($($item:item)*) => { |
371 | $( |
372 | #[cfg(feature = "sync" )] |
373 | #[cfg_attr(docsrs, doc(cfg(feature = "sync" )))] |
374 | $item |
375 | )* |
376 | } |
377 | } |
378 | |
379 | macro_rules! cfg_not_sync { |
380 | ($($item:item)*) => { |
381 | $( #[cfg(not(feature = "sync" ))] $item )* |
382 | } |
383 | } |
384 | |
385 | macro_rules! cfg_rt { |
386 | ($($item:item)*) => { |
387 | $( |
388 | #[cfg(feature = "rt" )] |
389 | #[cfg_attr(docsrs, doc(cfg(feature = "rt" )))] |
390 | $item |
391 | )* |
392 | } |
393 | } |
394 | |
395 | macro_rules! cfg_not_rt { |
396 | ($($item:item)*) => { |
397 | $( #[cfg(not(feature = "rt" ))] $item )* |
398 | } |
399 | } |
400 | |
401 | macro_rules! cfg_rt_multi_thread { |
402 | ($($item:item)*) => { |
403 | $( |
404 | #[cfg(feature = "rt-multi-thread" )] |
405 | #[cfg_attr(docsrs, doc(cfg(feature = "rt-multi-thread" )))] |
406 | $item |
407 | )* |
408 | } |
409 | } |
410 | |
411 | macro_rules! cfg_not_rt_multi_thread { |
412 | ($($item:item)*) => { |
413 | $( #[cfg(not(feature = "rt-multi-thread" ))] $item )* |
414 | } |
415 | } |
416 | |
417 | macro_rules! cfg_taskdump { |
418 | ($($item:item)*) => { |
419 | $( |
420 | #[cfg(all( |
421 | tokio_unstable, |
422 | tokio_taskdump, |
423 | feature = "rt" , |
424 | target_os = "linux" , |
425 | any( |
426 | target_arch = "aarch64" , |
427 | target_arch = "x86" , |
428 | target_arch = "x86_64" |
429 | ) |
430 | ))] |
431 | $item |
432 | )* |
433 | }; |
434 | } |
435 | |
436 | macro_rules! cfg_not_taskdump { |
437 | ($($item:item)*) => { |
438 | $( |
439 | #[cfg(not(all( |
440 | tokio_unstable, |
441 | tokio_taskdump, |
442 | feature = "rt" , |
443 | target_os = "linux" , |
444 | any( |
445 | target_arch = "aarch64" , |
446 | target_arch = "x86" , |
447 | target_arch = "x86_64" |
448 | ) |
449 | )))] |
450 | $item |
451 | )* |
452 | }; |
453 | } |
454 | |
455 | macro_rules! cfg_test_util { |
456 | ($($item:item)*) => { |
457 | $( |
458 | #[cfg(feature = "test-util" )] |
459 | #[cfg_attr(docsrs, doc(cfg(feature = "test-util" )))] |
460 | $item |
461 | )* |
462 | } |
463 | } |
464 | |
465 | macro_rules! cfg_not_test_util { |
466 | ($($item:item)*) => { |
467 | $( #[cfg(not(feature = "test-util" ))] $item )* |
468 | } |
469 | } |
470 | |
471 | macro_rules! cfg_time { |
472 | ($($item:item)*) => { |
473 | $( |
474 | #[cfg(feature = "time" )] |
475 | #[cfg_attr(docsrs, doc(cfg(feature = "time" )))] |
476 | $item |
477 | )* |
478 | } |
479 | } |
480 | |
481 | macro_rules! cfg_not_time { |
482 | ($($item:item)*) => { |
483 | $( #[cfg(not(feature = "time" ))] $item )* |
484 | } |
485 | } |
486 | |
487 | macro_rules! cfg_trace { |
488 | ($($item:item)*) => { |
489 | $( |
490 | #[cfg(all(tokio_unstable, feature = "tracing" ))] |
491 | #[cfg_attr(docsrs, doc(cfg(all(tokio_unstable, feature = "tracing" ))))] |
492 | $item |
493 | )* |
494 | }; |
495 | } |
496 | |
497 | macro_rules! cfg_unstable { |
498 | ($($item:item)*) => { |
499 | $( |
500 | #[cfg(tokio_unstable)] |
501 | #[cfg_attr(docsrs, doc(cfg(tokio_unstable)))] |
502 | $item |
503 | )* |
504 | }; |
505 | } |
506 | |
507 | macro_rules! cfg_not_trace { |
508 | ($($item:item)*) => { |
509 | $( |
510 | #[cfg(any(not(tokio_unstable), not(feature = "tracing" )))] |
511 | $item |
512 | )* |
513 | } |
514 | } |
515 | |
516 | macro_rules! cfg_coop { |
517 | ($($item:item)*) => { |
518 | $( |
519 | #[cfg(any( |
520 | feature = "fs" , |
521 | feature = "io-std" , |
522 | feature = "net" , |
523 | feature = "process" , |
524 | feature = "rt" , |
525 | feature = "signal" , |
526 | feature = "sync" , |
527 | feature = "time" , |
528 | ))] |
529 | $item |
530 | )* |
531 | } |
532 | } |
533 | |
534 | macro_rules! cfg_not_coop { |
535 | ($($item:item)*) => { |
536 | $( |
537 | #[cfg(not(any( |
538 | feature = "fs" , |
539 | feature = "io-std" , |
540 | feature = "net" , |
541 | feature = "process" , |
542 | feature = "rt" , |
543 | feature = "signal" , |
544 | feature = "sync" , |
545 | feature = "time" , |
546 | )))] |
547 | $item |
548 | )* |
549 | } |
550 | } |
551 | |
552 | macro_rules! cfg_has_atomic_u64 { |
553 | ($($item:item)*) => { |
554 | $( |
555 | #[cfg(target_has_atomic = "64" )] |
556 | $item |
557 | )* |
558 | } |
559 | } |
560 | |
561 | macro_rules! cfg_not_has_atomic_u64 { |
562 | ($($item:item)*) => { |
563 | $( |
564 | #[cfg(not(target_has_atomic = "64" ))] |
565 | $item |
566 | )* |
567 | } |
568 | } |
569 | |
570 | macro_rules! cfg_has_const_mutex_new { |
571 | ($($item:item)*) => { |
572 | $( |
573 | #[cfg(not(all(loom, test)))] |
574 | $item |
575 | )* |
576 | } |
577 | } |
578 | |
579 | macro_rules! cfg_not_has_const_mutex_new { |
580 | ($($item:item)*) => { |
581 | $( |
582 | #[cfg(all(loom, test))] |
583 | $item |
584 | )* |
585 | } |
586 | } |
587 | |
588 | macro_rules! cfg_not_wasi { |
589 | ($($item:item)*) => { |
590 | $( |
591 | #[cfg(not(target_os = "wasi" ))] |
592 | $item |
593 | )* |
594 | } |
595 | } |
596 | |
597 | macro_rules! cfg_is_wasm_not_wasi { |
598 | ($($item:item)*) => { |
599 | $( |
600 | #[cfg(all(target_family = "wasm" , not(target_os = "wasi" )))] |
601 | $item |
602 | )* |
603 | } |
604 | } |
605 | |