pub struct TlvStateMut<'data> { /* private fields */ }
Expand description

Encapsulates mutable base state data (mint or account) with possible extensions

Implementations§

source§

impl<'data> TlvStateMut<'data>

source

pub fn unpack(data: &'data mut [u8]) -> Result<Self, ProgramError>

Unpacks TLV state data

Fails if no state is initialized or if data is too small

source

pub fn get_value_mut<V: SplDiscriminate + Pod>( &mut self ) -> Result<&mut V, ProgramError>

Unpack a portion of the TLV data as the desired type that allows modifying the type

source

pub fn get_bytes_mut<V: SplDiscriminate>( &mut self ) -> Result<&mut [u8], ProgramError>

Unpack a portion of the TLV data as mutable bytes

source

pub fn init_value<V: SplDiscriminate + Pod + Default>( &mut self ) -> Result<&mut V, ProgramError>

Packs the default TLV data into the first open slot in the data buffer. If extension is already found in the buffer, it returns an error.

source

pub fn alloc<V: SplDiscriminate>( &mut self, length: usize ) -> Result<&mut [u8], ProgramError>

Allocate the given number of bytes for the given SplDiscriminate

source

pub fn realloc<V: SplDiscriminate>( &mut self, length: usize ) -> Result<&mut [u8], ProgramError>

Reallocate the given number of bytes for the given SplDiscriminate. If the new length is smaller, it will compact the rest of the buffer and zero out the difference at the end. If it’s larger, it will move the rest of the buffer data and zero out the new data.

Trait Implementations§

source§

impl<'data> Debug for TlvStateMut<'data>

source§

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

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

impl<'data> PartialEq<TlvStateMut<'data>> for TlvStateMut<'data>

source§

fn eq(&self, other: &TlvStateMut<'data>) -> 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> TlvState for TlvStateMut<'a>

source§

fn get_data(&self) -> &[u8]

Get the full buffer containing all TLV data
source§

fn get_value<V: SplDiscriminate + Pod>(&self) -> Result<&V, ProgramError>

Unpack a portion of the TLV data as the desired Pod type
source§

fn get_bytes<V: SplDiscriminate>(&self) -> Result<&[u8], ProgramError>

Unpack a portion of the TLV data as bytes
source§

fn get_discriminators(&self) -> Result<Vec<ArrayDiscriminator>, ProgramError>

Iterates through the TLV entries, returning only the types
source§

fn get_base_len() -> usize

Get the base size required for TLV data
source§

impl<'data> StructuralPartialEq for TlvStateMut<'data>

Auto Trait Implementations§

§

impl<'data> RefUnwindSafe for TlvStateMut<'data>

§

impl<'data> Send for TlvStateMut<'data>

§

impl<'data> Sync for TlvStateMut<'data>

§

impl<'data> Unpin for TlvStateMut<'data>

§

impl<'data> !UnwindSafe for TlvStateMut<'data>

Blanket Implementations§

§

impl<T> AbiExample for T

§

default fn example() -> T

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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.

source§

impl<T, U> Into<U> for Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

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

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.
§

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

§

fn vzip(self) -> V