pub trait Deserial: Sized {
    // Required method
    fn deserial<R>(_source: &mut R) -> Result<Self, ParseError>
       where R: Read;
}
Expand description

The Deserial trait provides a means of reading structures from byte-sources (Read).

Can be derived using #[derive(Deserial)] for most cases.

Required Methods§

source

fn deserial<R>(_source: &mut R) -> Result<Self, ParseError>
where R: Read,

Attempt to read a structure from a given source, failing if an error occurs during deserialization or reading.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Deserial for bool

Deserializing a bool reads one byte, and returns the value false if the byte is 0u8 and true if the byte is 1u8, every other value results in an error.

source§

fn deserial<R>(source: &mut R) -> Result<bool, ParseError>
where R: Read,

source§

impl Deserial for i8

source§

fn deserial<R>(source: &mut R) -> Result<i8, ParseError>
where R: Read,

source§

impl Deserial for i16

source§

fn deserial<R>(source: &mut R) -> Result<i16, ParseError>
where R: Read,

source§

impl Deserial for i32

source§

fn deserial<R>(source: &mut R) -> Result<i32, ParseError>
where R: Read,

source§

impl Deserial for i64

source§

fn deserial<R>(source: &mut R) -> Result<i64, ParseError>
where R: Read,

source§

impl Deserial for i128

source§

fn deserial<R>(source: &mut R) -> Result<i128, ParseError>
where R: Read,

source§

impl Deserial for u8

source§

fn deserial<R>(source: &mut R) -> Result<u8, ParseError>
where R: Read,

source§

impl Deserial for u16

source§

fn deserial<R>(source: &mut R) -> Result<u16, ParseError>
where R: Read,

source§

impl Deserial for u32

source§

fn deserial<R>(source: &mut R) -> Result<u32, ParseError>
where R: Read,

source§

impl Deserial for u64

source§

fn deserial<R>(source: &mut R) -> Result<u64, ParseError>
where R: Read,

source§

impl Deserial for u128

source§

fn deserial<R>(source: &mut R) -> Result<u128, ParseError>
where R: Read,

source§

impl Deserial for ()

source§

fn deserial<R>(_source: &mut R) -> Result<(), ParseError>
where R: Read,

source§

impl<A, B> Deserial for (A, B)
where A: Deserial, B: Deserial,

source§

fn deserial<R>(source: &mut R) -> Result<(A, B), ParseError>
where R: Read,

source§

impl<A, B, C, D> Deserial for (A, B, C, D)
where A: Deserial, B: Deserial, C: Deserial, D: Deserial,

source§

impl<A, B, C, D, E> Deserial for (A, B, C, D, E)
where A: Deserial, B: Deserial, C: Deserial, D: Deserial, E: Deserial,

source§

impl<A, B, C, D, E, F> Deserial for (A, B, C, D, E, F)
where A: Deserial, B: Deserial, C: Deserial, D: Deserial, E: Deserial, F: Deserial,

source§

impl<K> Deserial for HashSet<K, BuildHasherDefault<FnvHasher>>
where K: Deserial + Hash + Eq,

The deserialization of sets assumes their size is a u32.

WARNING: Deserialization only ensures that there are no duplicates. Serializing a HashSet via its Serial instance will not lay out elements in any particular order. As a consequence deserializing, and serializing back is in general not the identity. This could have consequences if the data is hashed, or the byte representation is used in some other way directly. In those cases use a BTreeSet instead.

source§

impl<K, V> Deserial for HashMap<K, V, BuildHasherDefault<FnvHasher>>
where K: Deserial + Hash + Eq, V: Deserial,

The deserialization of maps assumes their size is a u32.

WARNING: Deserialization only ensures that there are no duplicates. Serializing a HashMap via its Serial instance will not lay out elements in a particular order. As a consequence deserializing, and serializing back is in general not the identity. This could have consequences if the data is hashed, or the byte representation is used in some other way directly. In those cases use a BTreeMap instead.

source§

impl<T> Deserial for Option<T>
where T: Deserial,

Deserial by reading one byte, where 0u8 represents None and 1u8 represents Some, every other value results in an error. In the case of Some we deserialize using the contained T.

source§

fn deserial<R>(source: &mut R) -> Result<Option<T>, ParseError>
where R: Read,

source§

impl<T, const N: usize> Deserial for [T; N]
where T: Deserial,

source§

fn deserial<R>(source: &mut R) -> Result<[T; N], ParseError>
where R: Read,

source§

impl<X, Y, Z> Deserial for (X, Y, Z)
where X: Deserial, Y: Deserial, Z: Deserial,

source§

fn deserial<R>(source: &mut R) -> Result<(X, Y, Z), ParseError>
where R: Read,

Implementors§

source§

impl Deserial for Address

source§

impl Deserial for PublicKey

source§

impl Deserial for Signature

source§

impl Deserial for Fields

source§

impl Deserial for FunctionV1

source§

impl Deserial for SizeLength

source§

impl Deserial for Type

source§

impl Deserial for VersionedModuleSchema

source§

impl Deserial for ContractV0

source§

impl Deserial for ContractV1

source§

impl Deserial for ContractV2

source§

impl Deserial for ContractV3

source§

impl Deserial for FunctionV2

source§

impl Deserial for ModuleV0

source§

impl Deserial for ModuleV1

source§

impl Deserial for ModuleV2

source§

impl Deserial for ModuleV3

source§

impl Deserial for AccountAddress

source§

impl Deserial for AccountBalance

source§

impl Deserial for AccountPublicKeys

source§

impl Deserial for AccountSignatures

source§

impl Deserial for Amount

source§

impl Deserial for AttributeTag

source§

impl Deserial for AttributeValue

source§

impl Deserial for ChainMetadata

source§

impl Deserial for ContractAddress

source§

impl Deserial for CredentialPublicKeys

source§

impl Deserial for CredentialSignatures

source§

impl Deserial for Duration

source§

impl Deserial for ExchangeRate

source§

impl Deserial for ExchangeRates

source§

impl Deserial for HashKeccak256

source§

impl Deserial for HashSha2256

source§

impl Deserial for HashSha3256

source§

impl Deserial for MetadataUrl

source§

impl Deserial for OwnedContractName

source§

impl Deserial for OwnedEntrypointName

source§

impl Deserial for OwnedParameter

source§

impl Deserial for OwnedReceiveName

source§

impl Deserial for Policy<Vec<(AttributeTag, AttributeValue)>>

source§

impl Deserial for PublicKeyEcdsaSecp256k1

source§

impl Deserial for PublicKeyEd25519

source§

impl Deserial for SignatureEcdsaSecp256k1

source§

impl Deserial for SignatureEd25519

source§

impl Deserial for String

Deserial by reading an u32 representing the number of bytes, then takes that number of bytes and tries to decode using utf8.

source§

impl Deserial for Timestamp

source§

impl<C> Deserial for PhantomData<C>
where C: ?Sized,

source§

impl<K> Deserial for BTreeSet<K>
where K: Deserial + Ord,

The deserialization of sets assumes their size is a u32.

WARNING: Deserialization does not ensure the ordering of the keys, it only ensures that there are no duplicates. Serializing a BTreeSet via its Serial instance will lay out elements by the increasing order. As a consequence deserializing, and serializing back is in general not the identity. This could have consequences if the data is hashed, or the byte representation is used in some other way directly. In those cases a canonical order should be ensured to avoid subtle, difficult to diagnose, bugs.

source§

impl<K, V> Deserial for BTreeMap<K, V>
where K: Deserial + Ord, V: Deserial,

The deserialization of maps assumes their size is a u32.

WARNING: Deserialization does not ensure the ordering of the keys, it only ensures that there are no duplicates. Serializing a BTreeMap via its Serial instance will lay out elements by the increasing order of keys. As a consequence deserializing, and serializing back is in general not the identity. This could have consequences if the data is hashed, or the byte representation is used in some other way directly. In those cases the a canonical order should be ensured to avoid subtle, difficult to diagnose, bugs.

source§

impl<Kind> Deserial for NonZeroThresholdU8<Kind>

source§

impl<Purpose> Deserial for HashBytes<Purpose>

source§

impl<T> Deserial for Box<T>
where T: Deserial,

source§

impl<T> Deserial for Vec<T>
where T: Deserial,

Deserialized by reading an u32 representing the number of elements, then deserializing that many elements of type T.