Struct switchboard_solana::program_id::instruction::AccountMeta
#[repr(C)]pub struct AccountMeta {
pub pubkey: Pubkey,
pub is_signer: bool,
pub is_writable: bool,
}
Expand description
Describes a single account read or written by a program during instruction execution.
When constructing an Instruction
, a list of all accounts that may be
read or written during the execution of that instruction must be supplied.
Any account that may be mutated by the program during execution, either its
data or metadata such as held lamports, must be writable.
Note that because the Solana runtime schedules parallel transaction
execution around which accounts are writable, care should be taken that only
accounts which actually may be mutated are specified as writable. As the
default AccountMeta::new
constructor creates writable accounts, this is
a minor hazard: use AccountMeta::new_readonly
to specify that an account
is not writable.
Fields§
§pubkey: Pubkey
An account’s public key.
is_signer: bool
True if an Instruction
requires a Transaction
signature matching pubkey
.
is_writable: bool
True if the account data or metadata may be mutated during program execution.
Implementations§
§impl AccountMeta
impl AccountMeta
pub fn new(pubkey: Pubkey, is_signer: bool) -> AccountMeta
pub fn new(pubkey: Pubkey, is_signer: bool) -> AccountMeta
Construct metadata for a writable account.
§Examples
let instr = Instruction::new_with_borsh(
program_id,
&instruction,
vec![
AccountMeta::new(from, true),
AccountMeta::new(to, false),
],
);
pub fn new_readonly(pubkey: Pubkey, is_signer: bool) -> AccountMeta
pub fn new_readonly(pubkey: Pubkey, is_signer: bool) -> AccountMeta
Construct metadata for a read-only account.
§Examples
let instr = Instruction::new_with_borsh(
program_id,
&instruction,
vec![
AccountMeta::new(from, true),
AccountMeta::new(to, false),
AccountMeta::new_readonly(from_account_storage, false),
],
);
Trait Implementations§
§impl Clone for AccountMeta
impl Clone for AccountMeta
§fn clone(&self) -> AccountMeta
fn clone(&self) -> AccountMeta
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for AccountMeta
impl Debug for AccountMeta
§impl Default for AccountMeta
impl Default for AccountMeta
§fn default() -> AccountMeta
fn default() -> AccountMeta
§impl<'de> Deserialize<'de> for AccountMeta
impl<'de> Deserialize<'de> for AccountMeta
§fn deserialize<__D>(
__deserializer: __D
) -> Result<AccountMeta, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<AccountMeta, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl PartialEq for AccountMeta
impl PartialEq for AccountMeta
§fn eq(&self, other: &AccountMeta) -> bool
fn eq(&self, other: &AccountMeta) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Serialize for AccountMeta
impl Serialize for AccountMeta
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
§impl ToAccountMetas for AccountMeta
impl ToAccountMetas for AccountMeta
§fn to_account_metas(&self, _is_signer: Option<bool>) -> Vec<AccountMeta>
fn to_account_metas(&self, _is_signer: Option<bool>) -> Vec<AccountMeta>
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.impl Eq for AccountMeta
impl StructuralPartialEq for AccountMeta
Auto Trait Implementations§
impl Freeze for AccountMeta
impl RefUnwindSafe for AccountMeta
impl Send for AccountMeta
impl Sync for AccountMeta
impl Unpin for AccountMeta
impl UnwindSafe for AccountMeta
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more