Files
dioxus/packages/config-macro/src/lib.rs
T
Nico Burns 35e289fe28 Fix more examples to work with dioxus-native (#5179)
* Enable native for hotdog, file-explorer, and bluetooth-scanner examples

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Fix crash in calculator example

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Add config macro for native

* Add Config struct to dioxus-native

* Re-export dioxus-native as dioxus::native

* Fix calculator example to work with dioxus-native

* Fix calculator_mutable example to work with dioxus-native

---------

Signed-off-by: Nico Burns <nico@nicoburns.com>
2026-01-17 00:32:45 +00:00

39 lines
1.3 KiB
Rust

#![doc = include_str!("../README.md")]
#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/79236386")]
#![doc(html_favicon_url = "https://avatars.githubusercontent.com/u/79236386")]
use proc_macro::TokenStream;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
macro_rules! define_config_macro {
($name:ident if $($cfg:tt)+) => {
#[proc_macro]
pub fn $name(input: TokenStream) -> TokenStream {
if cfg!($($cfg)+) {
let input = TokenStream2::from(input);
quote! {
{
#input
}
}
} else {
quote! {
()
}
}
.into()
}
};
}
define_config_macro!(server_only if any(feature = "ssr", feature = "liveview"));
define_config_macro!(client if any(feature = "desktop", feature = "web", feature = "mobile"));
define_config_macro!(web if feature = "web");
define_config_macro!(desktop if feature = "desktop");
define_config_macro!(native if feature = "native");
define_config_macro!(mobile if feature = "mobile");
define_config_macro!(fullstack if feature = "fullstack");
define_config_macro!(ssr if feature = "ssr");
define_config_macro!(liveview if feature = "liveview");