Struct solana_program::message::AccountKeys

source ·
pub struct AccountKeys<'a> { /* private fields */ }
Expand description

Collection of static and dynamically loaded keys used to load accounts during transaction processing.

Implementations§

source§

impl<'a> AccountKeys<'a>

source

pub fn new( static_keys: &'a [Pubkey], dynamic_keys: Option<&'a LoadedAddresses> ) -> Self

source

pub fn get(&self, index: usize) -> Option<&'a Pubkey>

Returns the address of the account at the specified index of the list of message account keys constructed from static keys, followed by dynamically loaded writable addresses, and lastly the list of dynamically loaded readonly addresses.

source

pub fn len(&self) -> usize

Returns the total length of loaded accounts for a message

source

pub fn is_empty(&self) -> bool

Returns true if this collection of account keys is empty

source

pub fn iter(&self) -> impl Iterator<Item = &'a Pubkey>

Iterator for the addresses of the loaded accounts for a message

source

pub fn compile_instructions( &self, instructions: &[Instruction] ) -> Vec<CompiledInstruction>

Compile instructions using the order of account keys to determine compiled instruction account indexes.

§Panics

Panics when compiling fails. See AccountKeys::try_compile_instructions for a full description of failure scenarios.

source

pub fn try_compile_instructions( &self, instructions: &[Instruction] ) -> Result<Vec<CompiledInstruction>, CompileError>

Compile instructions using the order of account keys to determine compiled instruction account indexes.

§Errors

Compilation will fail if any instructions use account keys which are not present in this account key collection.

Compilation will fail if any instructions use account keys which are located at an index which cannot be cast to a u8 without overflow.

Trait Implementations§

source§

impl<'a> Clone for AccountKeys<'a>

source§

fn clone(&self) -> AccountKeys<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for AccountKeys<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> Default for AccountKeys<'a>

source§

fn default() -> AccountKeys<'a>

Returns the “default value” for a type. Read more
source§

impl Index<usize> for AccountKeys<'_>

§

type Output = Pubkey

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl PartialEq for AccountKeys<'_>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> Eq for AccountKeys<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for AccountKeys<'a>

§

impl<'a> RefUnwindSafe for AccountKeys<'a>

§

impl<'a> Send for AccountKeys<'a>

§

impl<'a> Sync for AccountKeys<'a>

§

impl<'a> Unpin for AccountKeys<'a>

§

impl<'a> UnwindSafe for AccountKeys<'a>

Blanket Implementations§

source§

impl<T> AbiExample for T

source§

default fn example() -> T

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V