Struct anchor_lang::Loader
source · [−]pub struct Loader<'info, T: ZeroCopy> { /* private fields */ }Expand description
Account loader facilitating on demand zero copy deserialization.
Note that using accounts in this way is distinctly different from using,
for example, the ProgramAccount. Namely,
one must call load, load_mut, or load_init, before reading or writing
to the account. For more details on zero-copy-deserialization, see the
account attribute.
When using it’s important to be mindful of any calls to load so as not to
induce a RefCell panic, especially when sharing accounts across CPI
boundaries. When in doubt, one should make sure all refs resulting from a
call to load are dropped before CPI.
Implementations
sourceimpl<'info, T: ZeroCopy> Loader<'info, T>
impl<'info, T: ZeroCopy> Loader<'info, T>
sourcepub fn try_from(
program_id: &Pubkey,
acc_info: &AccountInfo<'info>
) -> Result<Loader<'info, T>, ProgramError>
pub fn try_from(
program_id: &Pubkey,
acc_info: &AccountInfo<'info>
) -> Result<Loader<'info, T>, ProgramError>
Constructs a new Loader from a previously initialized account.
sourcepub fn try_from_unchecked(
program_id: &Pubkey,
acc_info: &AccountInfo<'info>
) -> Result<Loader<'info, T>, ProgramError>
pub fn try_from_unchecked(
program_id: &Pubkey,
acc_info: &AccountInfo<'info>
) -> Result<Loader<'info, T>, ProgramError>
Constructs a new Loader from an uninitialized account.
sourcepub fn load(&self) -> Result<Ref<'_, T>, ProgramError>
pub fn load(&self) -> Result<Ref<'_, T>, ProgramError>
Returns a Ref to the account data structure for reading.
sourcepub fn load_mut(&self) -> Result<RefMut<'_, T>, ProgramError>
pub fn load_mut(&self) -> Result<RefMut<'_, T>, ProgramError>
Returns a RefMut to the account data structure for reading or writing.
sourcepub fn load_init(&self) -> Result<RefMut<'_, T>, ProgramError>
pub fn load_init(&self) -> Result<RefMut<'_, T>, ProgramError>
Returns a RefMut to the account data structure for reading or writing.
Should only be called once, when the account is being initialized.
Trait Implementations
sourceimpl<'info, T: ZeroCopy> Accounts<'info> for Loader<'info, T>
impl<'info, T: ZeroCopy> Accounts<'info> for Loader<'info, T>
sourcefn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>],
_ix_data: &[u8]
) -> Result<Self, ProgramError>
fn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>],
_ix_data: &[u8]
) -> 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: ZeroCopy> AccountsClose<'info> for Loader<'info, T>
impl<'info, T: ZeroCopy> AccountsClose<'info> for Loader<'info, T>
fn close(&self, sol_destination: AccountInfo<'info>) -> ProgramResult
sourceimpl<'info, T: ZeroCopy> AccountsExit<'info> for Loader<'info, T>
impl<'info, T: ZeroCopy> AccountsExit<'info> for Loader<'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: ZeroCopy> AsRef<AccountInfo<'info>> for Loader<'info, T>
impl<'info, T: ZeroCopy> AsRef<AccountInfo<'info>> for Loader<'info, T>
sourcefn as_ref(&self) -> &AccountInfo<'info>
fn as_ref(&self) -> &AccountInfo<'info>
Converts this type into a shared reference of the (usually inferred) input type.
sourceimpl<'info, T: ZeroCopy> ToAccountInfo<'info> for Loader<'info, T>
impl<'info, T: ZeroCopy> ToAccountInfo<'info> for Loader<'info, T>
fn to_account_info(&self) -> AccountInfo<'info>
sourceimpl<'info, T: ZeroCopy> ToAccountInfos<'info> for Loader<'info, T>
impl<'info, T: ZeroCopy> ToAccountInfos<'info> for Loader<'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: ZeroCopy> ToAccountMetas for Loader<'info, T>
impl<'info, T: ZeroCopy> ToAccountMetas for Loader<'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 Loader<'info, T>
impl<'info, T> !Send for Loader<'info, T>
impl<'info, T> !Sync for Loader<'info, T>
impl<'info, T> Unpin for Loader<'info, T>
impl<'info, T> !UnwindSafe for Loader<'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