sov_universal_wallet_macros/
lib.rs1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4#[proc_macro_derive(UniversalWallet, attributes(sov_wallet))]
5pub fn derive_wallet(input: TokenStream) -> TokenStream {
6 let input = parse_macro_input!(input as DeriveInput);
7 let result = sov_universal_wallet_macro_helpers::schema::derive(
8 input,
9 None,
10 syn::parse_quote! { sov_universal_wallet::UniversalWallet },
11 );
12 handle_macro_error_and_expand(result.map(Into::into))
13}
14
15pub(crate) fn handle_macro_error_and_expand(result: syn::Result<TokenStream>) -> TokenStream {
18 result.unwrap_or_else(|err| err.to_compile_error().into())
19}