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 + Pod>(
&self,
) -> Result<usize, ProgramError> { ... }
fn try_get_new_account_len_for_variable_len_extension<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 + Pod>(
&self,
) -> Result<usize, ProgramError>
fn try_get_new_account_len<V: Extension + Pod>( &self, ) -> Result<usize, ProgramError>
Calculate the new expected size if the state allocates the given fixed-length extension instance. If the state already has the extension, the resulting account length will be unchanged.
sourcefn try_get_new_account_len_for_variable_len_extension<V: Extension + VariableLenPack>(
&self,
new_extension: &V,
) -> Result<usize, ProgramError>
fn try_get_new_account_len_for_variable_len_extension<V: Extension + VariableLenPack>( &self, new_extension: &V, ) -> Result<usize, ProgramError>
Calculate the new expected size if the state allocates the given variable-length extension instance.
Object Safety§
This trait is not object safe.