ContractFile

Struct ContractFile 

Source
pub struct ContractFile<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> ContractFile<'a>

Source

pub fn parse<CM>( file_bytes: &'a [u8], contract_method: CM, ) -> Result<Self, ContractFileParseError>

Parse file bytes and verify that internal invariants are valid.

contract_method argument is an optional callback called for each method in the contract file with its method address in the contract memory, metadata item, and corresponding metadata bytes. This can be used to collect available methods during parsing and avoid extra iteration later using Self::iterate_methods() to compute MethodFingerprint, etc.

Source

pub unsafe fn parse_unchecked(file_bytes: &'a [u8]) -> Self

Similar to ContractFile::parse() but does not verify internal invariants and assumes the input is valid.

This method is more efficient and does no checks that ContractFile::parse() does.

§Safety

Must be a valid input, for example, previously verified using ContractFile::parse().

Source

pub fn header(&self) -> ContractFileHeader

Get file header

Source

pub fn metadata_bytes(&self) -> &[u8]

Metadata stored in the file

Source

pub fn contract_memory_size(&self) -> u32

Memory allocation required for the contract

Source

pub fn initialize_contract_memory( &self, contract_memory: &mut [MaybeUninit<u8>], ) -> bool

Initialize contract memory with file contents.

Use Self::contract_memory_size() to identify the exact necessary amount of memory.

Source

pub fn get_code(&self) -> &[u8]

Get the complete code section with instructions

Source

pub fn iterate_methods( &self, ) -> impl ExactSizeIterator<Item = ContractFileMethod<'_>> + TrustedLen

Iterate over all methods in the contract

Trait Implementations§

Source§

impl<'a> Debug for ContractFile<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for ContractFile<'a>

§

impl<'a> RefUnwindSafe for ContractFile<'a>

§

impl<'a> Send for ContractFile<'a>

§

impl<'a> Sync for ContractFile<'a>

§

impl<'a> Unpin for ContractFile<'a>

§

impl<'a> UnwindSafe for ContractFile<'a>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more