dioxus_config_macro/
lib.rs1#![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");