pub struct JsonAccountsDeserializer<'opts> {
pub idl: Idl,
pub provider: IdlProvider,
pub account_deserializers: HashMap<DiscriminatorBytes, JsonIdlTypeDefinitionDeserializer<'opts>>,
pub account_discriminators: HashMap<String, DiscriminatorBytes>,
pub account_names: HashMap<DiscriminatorBytes, String>,
pub type_map: JsonTypeDefinitionDeserializerMap<'opts>,
pub serialization_opts: &'opts JsonSerializationOpts,
}Expand description
Fields§
§idl: IdlThe parsed Idl of the program
provider: IdlProviderThe IdlProvider of the program
account_deserializers: HashMap<DiscriminatorBytes, JsonIdlTypeDefinitionDeserializer<'opts>>The deserializers for accounts of this program keyed by the discriminator of each account type.
account_discriminators: HashMap<String, DiscriminatorBytes>Allows looking up a discriminator for an account by name.
account_names: HashMap<DiscriminatorBytes, String>Allows looking up a account names by discriminator.
type_map: JsonTypeDefinitionDeserializerMap<'opts>Map of defined type deserializers. Defined types are be nested inside accounts.
serialization_opts: &'opts JsonSerializationOptsThe JsonSerializationOpts specifying how specific data types should be deserialized.
Implementations§
Source§impl<'opts> JsonAccountsDeserializer<'opts>
impl<'opts> JsonAccountsDeserializer<'opts>
Sourcepub fn try_from_idl(
json: &str,
provider: IdlProvider,
serialization_opts: &'opts JsonSerializationOpts,
) -> ChainsawResult<Self>
pub fn try_from_idl( json: &str, provider: IdlProvider, serialization_opts: &'opts JsonSerializationOpts, ) -> ChainsawResult<Self>
Tries to create an [AccounbtDeserializer] by parsing the Idl. Fails if the IDL could not be parsed.
- [json} the IDL definition in JSON format
- [provider] the provider used to create the IDL
- [serialization_opts] specifying how specific data types should be deserialized.
Sourcepub fn from_idl(
idl: Idl,
provider: IdlProvider,
serialization_opts: &'opts JsonSerializationOpts,
) -> Self
pub fn from_idl( idl: Idl, provider: IdlProvider, serialization_opts: &'opts JsonSerializationOpts, ) -> Self
Creates an [AccounbtDeserializer] from the provided Idl Fails if the IDL could not be parsed.
- [idl} the IDL definition
- [provider] the provider used to create the IDL
- [serialization_opts] specifying how specific data types should be deserialized.
Sourcepub fn deserialize_account_data<W: Write>(
&self,
account_data: &mut &[u8],
f: &mut W,
) -> ChainsawResult<()>
pub fn deserialize_account_data<W: Write>( &self, account_data: &mut &[u8], f: &mut W, ) -> ChainsawResult<()>
Deserializes an account from the provided data.
This is the common way of resolving an account json and using it to deserialize account data. It expects the first 8 bytes of data to hold the account discriminator as is the case for anchor accounts. For all other accounts use [deserialize_account_data_by_name] instead.
Sourcepub fn deserialize_account_data_by_name<W: Write>(
&self,
account_data: &mut &[u8],
account_name: &str,
f: &mut W,
) -> ChainsawResult<()>
pub fn deserialize_account_data_by_name<W: Write>( &self, account_data: &mut &[u8], account_name: &str, f: &mut W, ) -> ChainsawResult<()>
Deserializes an account from the provided data.
This method expects account data to not be prefixed with 8 bytes of discriminator data. Instead it derives that discriminator from the provided account name and then looks up the json.
Sourcepub fn account_name(&self, discriminator: &DiscriminatorBytes) -> Option<&str>
pub fn account_name(&self, discriminator: &DiscriminatorBytes) -> Option<&str>
Resolves the account name for the provided discriminator.
Auto Trait Implementations§
impl<'opts> Freeze for JsonAccountsDeserializer<'opts>
impl<'opts> RefUnwindSafe for JsonAccountsDeserializer<'opts>
impl<'opts> Send for JsonAccountsDeserializer<'opts>
impl<'opts> Sync for JsonAccountsDeserializer<'opts>
impl<'opts> Unpin for JsonAccountsDeserializer<'opts>
impl<'opts> UnwindSafe for JsonAccountsDeserializer<'opts>
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