zvariant_derive/
utils.rs

1use proc_macro2::TokenStream;
2use proc_macro_crate::{crate_name, FoundCrate};
3use quote::{format_ident, quote};
4use zvariant_utils::def_attrs;
5
6pub fn zvariant_path() -> TokenStream {
7    if let Ok(FoundCrate::Name(name)) = crate_name("zvariant") {
8        let ident = format_ident!("{}", name);
9        quote! { ::#ident }
10    } else if let Ok(FoundCrate::Name(name)) = crate_name("zbus") {
11        let ident = format_ident!("{}", name);
12        quote! { ::#ident::zvariant }
13    } else {
14        quote! { ::zvariant }
15    }
16}
17
18def_attrs! {
19    crate zvariant;
20
21    /// Attributes defined on structures.
22    pub StructAttributes("struct") { signature str, rename_all str, deny_unknown_fields none };
23    /// Attributes defined on fields.
24    pub FieldAttributes("field") { rename str };
25}