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.

Implementations on Foreign Types§

source§

impl Deserial for i128

source§

fn deserial<R>(source: &mut R) -> Result<i128, 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<K, V> Deserial for HashMap<K, V, BuildHasherDefault<FnvHasher>, Global>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§

fn deserial<R>(
source: &mut R
) -> Result<HashMap<K, V, BuildHasherDefault<FnvHasher>, Global>, 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 Deserial for u32

source§

fn deserial<R>(source: &mut R) -> Result<u32, 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 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<K> Deserial for HashSet<K, BuildHasherDefault<FnvHasher>, Global>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§

fn deserial<R>(
source: &mut R
) -> Result<HashSet<K, BuildHasherDefault<FnvHasher>, Global>, ParseError>where
R: Read,

source§

impl Deserial for i32

source§

fn deserial<R>(source: &mut R) -> Result<i32, 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,

source§

impl Deserial for u64

source§

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

source§

impl Deserial for i64

source§

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

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<X, Y> Deserial for (X, Y)where
X: Deserial,
Y: Deserial,

source§

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

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,

Implementors§

source§

impl Deserial for Address

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 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 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 ModuleReference

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), Global>>

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, Global>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, Global>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<T> Deserial for Box<T, Global>where
T: Deserial,

source§

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

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