lib.rs 620 B

123456789101112131415
  1. extern crate proc_macro;
  2. use anchor_syn::codegen::accounts as accounts_codegen;
  3. use anchor_syn::parser::accounts as accounts_parser;
  4. use proc_macro::TokenStream;
  5. use syn::parse_macro_input;
  6. /// Implements an `Accounts` deserializer on the given struct, applying any
  7. /// constraints specified via `#[account]` attributes.
  8. #[proc_macro_derive(Accounts, attributes(account))]
  9. pub fn derive_anchor_deserialize(item: TokenStream) -> TokenStream {
  10. let strct = parse_macro_input!(item as syn::ItemStruct);
  11. let tts = accounts_codegen::generate(accounts_parser::parse(&strct));
  12. proc_macro::TokenStream::from(tts)
  13. }