Skip to main content

FrameInfo

Struct FrameInfo 

Source
pub struct FrameInfo {
    pub account_count: usize,
    pub instruction_data_range: Range<usize>,
    pub program_id_offset: usize,
    pub slot_offsets: [usize; 256],
}
Expand description

Summary of a safely-parsed loader input frame.

Only metadata is returned. the full AccountView construction requires the raw pointer path. This struct is what off-chain tools (and fuzz harnesses) need to verify a buffer is well-formed.

The slot_offsets array is a fixed [usize; MAX_SAFE_ACCOUNT_SLOTS] with the first account_count entries populated. Remaining entries are zero. Callers can distinguish duplicate vs canonical slots by checking whether buffer[offset] equals 0xFF.

Fields§

§account_count: usize

Number of accounts the loader would hand to the program.

§instruction_data_range: Range<usize>

Byte range of the instruction data within the original buffer.

§program_id_offset: usize

Byte offset of the 32-byte program id within the original buffer.

§slot_offsets: [usize; 256]

Byte offsets of each account slot, indexable 0..account_count.

Trait Implementations§

Source§

impl Clone for FrameInfo

Source§

fn clone(&self) -> FrameInfo

Returns a duplicate 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 Debug for FrameInfo

Source§

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

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

impl PartialEq for FrameInfo

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for FrameInfo

Source§

impl StructuralPartialEq for FrameInfo

Auto Trait Implementations§

Blanket Implementations§

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.