trident_derive_accounts/
lib.rs

1use proc_macro::TokenStream;
2use quote::ToTokens;
3use syn::parse_macro_input;
4use syn::ItemStruct;
5
6use trident_syn::parser::trident_accounts::parse_trident_accounts;
7
8#[proc_macro_derive(TridentAccounts, attributes(account, instruction_data, storage))]
9pub fn derive_trident_accounts(input: TokenStream) -> TokenStream {
10    let item_struct = parse_macro_input!(input as ItemStruct);
11
12    match parse_trident_accounts(&item_struct) {
13        Ok(accounts) => accounts.to_token_stream().into(),
14        Err(err) => err.to_compile_error().into(),
15    }
16}