From CpiAccount for ProgramAccount

This commit is contained in:
Armani Ferrante 2021-01-14 23:01:26 -08:00
parent e187cb5cbb
commit fa67756774
No known key found for this signature in database
GPG Key ID: D597A80BCF8E12B7
2 changed files with 15 additions and 3 deletions

View File

@ -10,7 +10,7 @@ mod puppet_master {
pub fn pull_strings(ctx: Context<PullStrings>, data: u64) -> ProgramResult {
let cpi_program = ctx.accounts.puppet_program.clone();
let cpi_accounts = SetData {
puppet: ctx.accounts.puppet.clone(),
puppet: ctx.accounts.puppet.clone().into(),
};
let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts);
puppet::cpi::set_data(cpi_ctx, data)

View File

@ -1,6 +1,6 @@
use crate::{
AccountDeserialize, AccountSerialize, Accounts, AccountsInit, ToAccountInfo, ToAccountInfos,
ToAccountMetas,
AccountDeserialize, AccountSerialize, Accounts, AccountsInit, CpiAccount, ToAccountInfo,
ToAccountInfos, ToAccountMetas,
};
use solana_sdk::account_info::AccountInfo;
use solana_sdk::instruction::AccountMeta;
@ -129,3 +129,15 @@ impl<'a, T: AccountSerialize + AccountDeserialize + Clone> DerefMut for ProgramA
&mut self.account
}
}
impl<'info, T> From<CpiAccount<'info, T>> for ProgramAccount<'info, T>
where
T: AccountSerialize + AccountDeserialize + Clone,
{
fn from(a: CpiAccount<'info, T>) -> Self {
Self {
info: a.to_account_info(),
account: Deref::deref(&a).clone(),
}
}
}