Struct anchor_lang::ProgramAccount
source · [−]pub struct ProgramAccount<'info, T: AccountSerialize + AccountDeserialize + Clone> { /* private fields */ }
Expand description
Boxed container for a deserialized account
. Use this to reference any
account owned by the currently executing program.
Implementations
sourceimpl<'a, T: AccountSerialize + AccountDeserialize + Clone> ProgramAccount<'a, T>
impl<'a, T: AccountSerialize + AccountDeserialize + Clone> ProgramAccount<'a, T>
pub fn new(info: AccountInfo<'a>, account: T) -> ProgramAccount<'a, T>
sourcepub fn try_from(
info: &AccountInfo<'a>
) -> Result<ProgramAccount<'a, T>, ProgramError>
pub fn try_from(
info: &AccountInfo<'a>
) -> Result<ProgramAccount<'a, T>, ProgramError>
Deserializes the given info
into a ProgramAccount
.
sourcepub fn try_from_init(
info: &AccountInfo<'a>
) -> Result<ProgramAccount<'a, T>, ProgramError>
pub fn try_from_init(
info: &AccountInfo<'a>
) -> Result<ProgramAccount<'a, T>, ProgramError>
Deserializes the zero-initialized info
into a ProgramAccount
without
checking the account type. This should only be used upon program account
initialization (since the entire account data array is zeroed and thus
no account type is set).
Trait Implementations
sourceimpl<'info, T> Accounts<'info> for ProgramAccount<'info, T> where
T: AccountSerialize + AccountDeserialize + Clone,
impl<'info, T> Accounts<'info> for ProgramAccount<'info, T> where
T: AccountSerialize + AccountDeserialize + Clone,
sourcefn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>]
) -> Result<Self, ProgramError>
fn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>]
) -> Result<Self, ProgramError>
Returns the validated accounts struct. What constitutes “valid” is
program dependent. However, users of these types should never have to
worry about account substitution attacks. For example, if a program
expects a Mint
account from the SPL token program in a particular
field, then it should be impossible for this method to return Ok
if
any other account type is given–from the SPL token program or elsewhere. Read more
sourceimpl<'info, T: AccountSerialize + AccountDeserialize + Clone> AccountsExit<'info> for ProgramAccount<'info, T>
impl<'info, T: AccountSerialize + AccountDeserialize + Clone> AccountsExit<'info> for ProgramAccount<'info, T>
sourcefn exit(&self, _program_id: &Pubkey) -> ProgramResult
fn exit(&self, _program_id: &Pubkey) -> ProgramResult
program_id
is the currently executing program.
sourceimpl<'info, T> AccountsInit<'info> for ProgramAccount<'info, T> where
T: AccountSerialize + AccountDeserialize + Clone,
impl<'info, T> AccountsInit<'info> for ProgramAccount<'info, T> where
T: AccountSerialize + AccountDeserialize + Clone,
fn try_accounts_init(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>]
) -> Result<Self, ProgramError>
sourceimpl<'info, T: Clone + AccountSerialize + AccountDeserialize + Clone> Clone for ProgramAccount<'info, T>
impl<'info, T: Clone + AccountSerialize + AccountDeserialize + Clone> Clone for ProgramAccount<'info, T>
sourcefn clone(&self) -> ProgramAccount<'info, T>
fn clone(&self) -> ProgramAccount<'info, T>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'a, T: AccountSerialize + AccountDeserialize + Clone> Deref for ProgramAccount<'a, T>
impl<'a, T: AccountSerialize + AccountDeserialize + Clone> Deref for ProgramAccount<'a, T>
sourceimpl<'a, T: AccountSerialize + AccountDeserialize + Clone> DerefMut for ProgramAccount<'a, T>
impl<'a, T: AccountSerialize + AccountDeserialize + Clone> DerefMut for ProgramAccount<'a, T>
sourceimpl<'info, T> From<CpiAccount<'info, T>> for ProgramAccount<'info, T> where
T: AccountSerialize + AccountDeserialize + Clone,
impl<'info, T> From<CpiAccount<'info, T>> for ProgramAccount<'info, T> where
T: AccountSerialize + AccountDeserialize + Clone,
sourcefn from(a: CpiAccount<'info, T>) -> Self
fn from(a: CpiAccount<'info, T>) -> Self
Converts to this type from the input type.
sourceimpl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountInfo<'info> for ProgramAccount<'info, T>
impl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountInfo<'info> for ProgramAccount<'info, T>
fn to_account_info(&self) -> AccountInfo<'info>
sourceimpl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountInfos<'info> for ProgramAccount<'info, T>
impl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountInfos<'info> for ProgramAccount<'info, T>
fn to_account_infos(&self) -> Vec<AccountInfo<'info>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
sourceimpl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountMetas for ProgramAccount<'info, T>
impl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountMetas for ProgramAccount<'info, T>
sourcefn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
fn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
is_signer
is given as an optional override for the signer meta field.
This covers the edge case when a program-derived-address needs to relay
a transaction from a client to another program but sign the transaction
before the relay. The client cannot mark the field as a signer, and so
we have to override the is_signer meta field given by the client. Read more
Auto Trait Implementations
impl<'info, T> !RefUnwindSafe for ProgramAccount<'info, T>
impl<'info, T> !Send for ProgramAccount<'info, T>
impl<'info, T> !Sync for ProgramAccount<'info, T>
impl<'info, T> Unpin for ProgramAccount<'info, T>
impl<'info, T> !UnwindSafe for ProgramAccount<'info, T>
Blanket Implementations
impl<T> AbiExample for T
impl<T> AbiExample for T
default fn example() -> T
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more