Struct spl_type_length_value::state::TlvStateMut
source · 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>
impl<'data> TlvStateMut<'data>
sourcepub fn unpack(data: &'data mut [u8]) -> Result<Self, ProgramError>
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
sourcepub fn get_value_with_repetition_mut<V: SplDiscriminate + Pod>(
&mut self,
repetition_number: usize,
) -> Result<&mut V, ProgramError>
pub fn get_value_with_repetition_mut<V: SplDiscriminate + Pod>( &mut self, repetition_number: usize, ) -> Result<&mut V, ProgramError>
Unpack a portion of the TLV data as the desired type that allows modifying the type for the entry number specified
sourcepub fn get_first_value_mut<V: SplDiscriminate + Pod>(
&mut self,
) -> Result<&mut V, ProgramError>
pub fn get_first_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 for the first entry found
sourcepub fn get_bytes_with_repetition_mut<V: SplDiscriminate>(
&mut self,
repetition_number: usize,
) -> Result<&mut [u8], ProgramError>
pub fn get_bytes_with_repetition_mut<V: SplDiscriminate>( &mut self, repetition_number: usize, ) -> Result<&mut [u8], ProgramError>
Unpack a portion of the TLV data as mutable bytes for the entry number specified
sourcepub fn get_first_bytes_mut<V: SplDiscriminate>(
&mut self,
) -> Result<&mut [u8], ProgramError>
pub fn get_first_bytes_mut<V: SplDiscriminate>( &mut self, ) -> Result<&mut [u8], ProgramError>
Unpack a portion of the TLV data as mutable bytes for the first entry found
sourcepub fn init_value<V: SplDiscriminate + Pod + Default>(
&mut self,
allow_repetition: bool,
) -> Result<(&mut V, usize), ProgramError>
pub fn init_value<V: SplDiscriminate + Pod + Default>( &mut self, allow_repetition: bool, ) -> Result<(&mut V, usize), ProgramError>
Packs the default TLV data into the first open slot in the data buffer. Handles repetition based on the boolean arg provided:
true
: If extension is already found in the buffer, it returns an error.false
: Will add a new entry to the next open slot.
sourcepub fn pack_variable_len_value_with_repetition<V: SplDiscriminate + VariableLenPack>(
&mut self,
value: &V,
repetition_number: usize,
) -> Result<(), ProgramError>
pub fn pack_variable_len_value_with_repetition<V: SplDiscriminate + VariableLenPack>( &mut self, value: &V, repetition_number: usize, ) -> Result<(), ProgramError>
Packs a variable-length value into its appropriate data segment, where repeating discriminators are allowed
sourcepub fn pack_first_variable_len_value<V: SplDiscriminate + VariableLenPack>(
&mut self,
value: &V,
) -> Result<(), ProgramError>
pub fn pack_first_variable_len_value<V: SplDiscriminate + VariableLenPack>( &mut self, value: &V, ) -> Result<(), ProgramError>
Packs a variable-length value into its appropriate data segment, where no repeating discriminators are allowed
sourcepub fn alloc<V: SplDiscriminate>(
&mut self,
length: usize,
allow_repetition: bool,
) -> Result<(&mut [u8], usize), ProgramError>
pub fn alloc<V: SplDiscriminate>( &mut self, length: usize, allow_repetition: bool, ) -> Result<(&mut [u8], usize), ProgramError>
Allocate the given number of bytes for the given SplDiscriminate
sourcepub fn alloc_and_pack_variable_len_entry<V: SplDiscriminate + VariableLenPack>(
&mut self,
value: &V,
allow_repetition: bool,
) -> Result<usize, ProgramError>
pub fn alloc_and_pack_variable_len_entry<V: SplDiscriminate + VariableLenPack>( &mut self, value: &V, allow_repetition: bool, ) -> Result<usize, ProgramError>
Allocates and serializes a new TLV entry from a VariableLenPack
type
sourcepub fn realloc_with_repetition<V: SplDiscriminate>(
&mut self,
length: usize,
repetition_number: usize,
) -> Result<&mut [u8], ProgramError>
pub fn realloc_with_repetition<V: SplDiscriminate>( &mut self, length: usize, repetition_number: 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.
sourcepub fn realloc_first<V: SplDiscriminate>(
&mut self,
length: usize,
) -> Result<&mut [u8], ProgramError>
pub fn realloc_first<V: SplDiscriminate>( &mut self, length: usize, ) -> Result<&mut [u8], ProgramError>
Reallocate the given number of bytes for the given SplDiscriminate, where no repeating discriminators are allowed
Trait Implementations§
source§impl<'data> Debug for TlvStateMut<'data>
impl<'data> Debug for TlvStateMut<'data>
source§impl<'data> PartialEq for TlvStateMut<'data>
impl<'data> PartialEq for TlvStateMut<'data>
source§fn eq(&self, other: &TlvStateMut<'data>) -> bool
fn eq(&self, other: &TlvStateMut<'data>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<'a> TlvState for TlvStateMut<'a>
impl<'a> TlvState for TlvStateMut<'a>
source§fn get_value_with_repetition<V: SplDiscriminate + Pod>(
&self,
repetition_number: usize,
) -> Result<&V, ProgramError>
fn get_value_with_repetition<V: SplDiscriminate + Pod>( &self, repetition_number: usize, ) -> Result<&V, ProgramError>
source§fn get_first_value<V: SplDiscriminate + Pod>(&self) -> Result<&V, ProgramError>
fn get_first_value<V: SplDiscriminate + Pod>(&self) -> Result<&V, ProgramError>
source§fn get_variable_len_value_with_repetition<V: SplDiscriminate + VariableLenPack>(
&self,
repetition_number: usize,
) -> Result<V, ProgramError>
fn get_variable_len_value_with_repetition<V: SplDiscriminate + VariableLenPack>( &self, repetition_number: usize, ) -> Result<V, ProgramError>
source§fn get_first_variable_len_value<V: SplDiscriminate + VariableLenPack>(
&self,
) -> Result<V, ProgramError>
fn get_first_variable_len_value<V: SplDiscriminate + VariableLenPack>( &self, ) -> Result<V, ProgramError>
source§fn get_bytes_with_repetition<V: SplDiscriminate>(
&self,
repetition_number: usize,
) -> Result<&[u8], ProgramError>
fn get_bytes_with_repetition<V: SplDiscriminate>( &self, repetition_number: usize, ) -> Result<&[u8], ProgramError>
source§fn get_first_bytes<V: SplDiscriminate>(&self) -> Result<&[u8], ProgramError>
fn get_first_bytes<V: SplDiscriminate>(&self) -> Result<&[u8], ProgramError>
source§fn get_discriminators(&self) -> Result<Vec<ArrayDiscriminator>, ProgramError>
fn get_discriminators(&self) -> Result<Vec<ArrayDiscriminator>, ProgramError>
source§fn get_base_len() -> usize
fn get_base_len() -> usize
impl<'data> StructuralPartialEq for TlvStateMut<'data>
Auto Trait Implementations§
impl<'data> Freeze for TlvStateMut<'data>
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§
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
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