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§
fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self, Error>
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§
fn try_deserialize(buf: &mut &[u8]) -> Result<Self, Error>
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
.
Object Safety§
This trait is not object safe.