dioxus_config_macro/
lib.rs

1#![doc = include_str!("../README.md")]
2#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/79236386")]
3#![doc(html_favicon_url = "https://avatars.githubusercontent.com/u/79236386")]
4
5use proc_macro::TokenStream;
6use proc_macro2::TokenStream as TokenStream2;
7use quote::quote;
8
9macro_rules! define_config_macro {
10    ($name:ident if $($cfg:tt)+) => {
11        #[proc_macro]
12        pub fn $name(input: TokenStream) -> TokenStream {
13            if cfg!($($cfg)+) {
14                let input = TokenStream2::from(input);
15                quote! {
16                    {
17                        #input
18                    }
19                }
20            } else {
21                quote! {
22                    ()
23                }
24            }
25            .into()
26        }
27    };
28}
29
30define_config_macro!(server_only if any(feature = "ssr", feature = "liveview"));
31define_config_macro!(client if any(feature = "desktop", feature = "web", feature = "mobile"));
32define_config_macro!(web if feature = "web");
33define_config_macro!(desktop if feature = "desktop");
34define_config_macro!(mobile if feature = "mobile");
35define_config_macro!(fullstack if feature = "fullstack");
36define_config_macro!(ssr if feature = "ssr");
37define_config_macro!(liveview if feature = "liveview");