conditional_mod/
lib.rs

1/// Conditionally declares a mod as public.
2///
3/// Arguments:
4/// - name - The name of the module being declared
5/// - cond - The condition for `conditional_vis`
6/// - conditional_vis - The visibility to use if `cond` is true
7/// - fallback_vis - Optional visibility to use if `cond` is false
8#[macro_export]
9macro_rules! conditional_vis_mod {
10    ($name:ident, $cond:meta, $conditional_vis:vis) => {
11        #[cfg($cond)]
12        $conditional_vis mod $name;
13        #[cfg(not($cond))]
14        mod $name;
15    };
16    ($name:ident, $cond:meta, $conditional_vis:vis, $fallback_vis:vis) => {
17        #[cfg($cond)]
18        $conditional_vis mod $name;
19        #[cfg(not($cond))]
20        $fallback_vis mod $name;
21    };
22}