I am trying to CPI the Token Program to send spl-tokens to a wallet. For this the derive accounts in the context struct has three accounts without any attribute over them:
- mint_token_out: Account<'info, Mint> (which is the mint address)
- token_out: Account<'info, TokenAccount>(which is the token account that the token would be sent out from) and
- token_program: Program<'info, Token>.
But I get four Trait not implemented errors. They are:
- the trait
AccountSerialize
is not implemented foranchor_spl::token::Mint
at line --- mint_token_out - the trait
anchor_lang::AccountDeserialize
is not implemented forTokenAccount
at line --- token_out: Account<'info, TokenAccount> - the trait
anchor_lang::Owner
is not implemented forTokenAccount
at line --- token_out: Account<'info, TokenAccount> - the trait
anchor_lang::Owner
is not implemented foranchor_spl::token::Mint
at line --- mint_token_out: Account<'info, Mint>
Is there something wrong I'm doing?
I have tried adding the constraint #[account(mut, has_one = wallet, owner = wallet)] as the account attribute for mint_token_out. But I still get the error..
That error indicates that you did not use
#[derive(Accounts)]
for the related struct that you created for the method.#[derive(Accounts)]
Implements an Accounts deserializer on the given struct. Meaning it allows this struct to process user addresses and accounts.