pub trait BaseStateWithExtensions<S: BaseState> {
// Required method
fn get_tlv_data(&self) -> &[u8] ⓘ;
// Provided methods
fn get_extension_bytes<V: Extension>(&self) -> Result<&[u8], ProgramError> { ... }
fn get_extension<V: Extension + Pod>(&self) -> Result<&V, ProgramError> { ... }
fn get_variable_len_extension<V: Extension + VariableLenPack>(
&self
) -> Result<V, ProgramError> { ... }
fn get_extension_types(&self) -> Result<Vec<ExtensionType>, ProgramError> { ... }
fn get_first_extension_type(
&self
) -> Result<Option<ExtensionType>, ProgramError> { ... }
fn try_get_account_len(&self) -> Result<usize, ProgramError> { ... }
fn try_get_new_account_len<V: Extension + VariableLenPack>(
&self,
new_extension: &V
) -> Result<usize, ProgramError> { ... }
}
Expand description
Trait for base state with extension
Required Methods§
sourcefn get_tlv_data(&self) -> &[u8] ⓘ
fn get_tlv_data(&self) -> &[u8] ⓘ
Get the buffer containing all extension data
Provided Methods§
sourcefn get_extension_bytes<V: Extension>(&self) -> Result<&[u8], ProgramError>
fn get_extension_bytes<V: Extension>(&self) -> Result<&[u8], ProgramError>
Fetch the bytes for a TLV entry
sourcefn get_extension<V: Extension + Pod>(&self) -> Result<&V, ProgramError>
fn get_extension<V: Extension + Pod>(&self) -> Result<&V, ProgramError>
Unpack a portion of the TLV data as the desired type
sourcefn get_variable_len_extension<V: Extension + VariableLenPack>(
&self
) -> Result<V, ProgramError>
fn get_variable_len_extension<V: Extension + VariableLenPack>( &self ) -> Result<V, ProgramError>
Unpacks a portion of the TLV data as the desired variable-length type
sourcefn get_extension_types(&self) -> Result<Vec<ExtensionType>, ProgramError>
fn get_extension_types(&self) -> Result<Vec<ExtensionType>, ProgramError>
Iterates through the TLV entries, returning only the types
sourcefn get_first_extension_type(
&self
) -> Result<Option<ExtensionType>, ProgramError>
fn get_first_extension_type( &self ) -> Result<Option<ExtensionType>, ProgramError>
Get just the first extension type, useful to track mixed initializations
sourcefn try_get_account_len(&self) -> Result<usize, ProgramError>
fn try_get_account_len(&self) -> Result<usize, ProgramError>
Get the total number of bytes used by TLV entries and the base type
sourcefn try_get_new_account_len<V: Extension + VariableLenPack>(
&self,
new_extension: &V
) -> Result<usize, ProgramError>
fn try_get_new_account_len<V: Extension + VariableLenPack>( &self, new_extension: &V ) -> Result<usize, ProgramError>
Calculate the new expected size if the state allocates the given number of bytes for the given extension type.
Provides the correct answer regardless if the extension is already present in the TLV data.