Struct switchboard_aggregator::Loader [−][src]
pub struct Loader<'info, T> where
T: ZeroCopy, { /* fields omitted */ }
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
pub 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.
pub 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.
Returns a Ref to the account data structure for reading.
Returns a RefMut
to the account data structure for reading or writing.
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
pub fn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>],
_ix_data: &[u8]
) -> Result<Loader<'info, T>, ProgramError>
pub fn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>],
_ix_data: &[u8]
) -> Result<Loader<'info, T>, 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
Performs the conversion.
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