1#[cfg(feature = "atomic")]
2mod atomic_bit_state;
3
4mod bit_state;
5
6use proc_macro::TokenStream;
7
8#[cfg(feature = "non-atomic")]
9#[proc_macro_derive(BitStates)]
10pub fn bit_flag_derive(input: TokenStream) -> TokenStream {
11 bit_state::derive(input)
12}
13
14#[cfg(feature = "atomic")]
15#[proc_macro_derive(AtomicBitStates)]
16pub fn atomic_bit_flag_derive(input: TokenStream) -> TokenStream {
17 atomic_bit_state::derive(input)
18}
19
20#[cfg(not(feature = "atomic"))]
21#[proc_macro_derive(AtomicBitState)]
22pub fn atomic_bit_state_derive(_input: TokenStream) -> TokenStream {
23 syn::Error::new(
25 proc_macro2::Span::call_site(),
26 "AtomicBitState requires the `atomic` feature to be enabled.\n\
27 Add `features = [\"atomic\"]` to your dependency.",
28 )
29 .to_compile_error()
30 .into()
31}