Trait AccountDeserialize

Source
pub trait AccountDeserialize: Sized {
    // Required method
    fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self, Error>;

    // Provided method
    fn try_deserialize(buf: &mut &[u8]) -> Result<Self, Error> { ... }
}
Expand description

A data structure that can be deserialized and stored into account storage, i.e. an AccountInfo’s mutable data slice.

Required Methods§

Source

fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self, Error>

Deserializes account data without checking the account discriminator. This should only be used on account initialization, when the bytes of the account are zeroed.

Provided Methods§

Source

fn try_deserialize(buf: &mut &[u8]) -> Result<Self, Error>

Deserializes previously initialized account data. Should fail for all uninitialized accounts, where the bytes are zeroed. Implementations should be unique to a particular account type so that one can never successfully deserialize the data of one account type into another. For example, if the SPL token program were to implement this trait, it should be impossible to deserialize a Mint account into a token Account.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl AccountDeserialize for RegisteredProgram

Source§

impl AccountDeserialize for AccessMetadata

Source§

impl AccountDeserialize for AddressMerkleTreeAccount

Source§

impl AccountDeserialize for GroupAuthority

Source§

impl AccountDeserialize for MerkleTreeMetadata

Source§

impl AccountDeserialize for StateMerkleTreeAccount

Source§

impl AccountDeserialize for QueueAccount

Source§

impl AccountDeserialize for QueueMetadata

Source§

impl AccountDeserialize for RolloverMetadata

Implementors§