[][src]Trait strict_encoding::StrictDecode

pub trait StrictDecode: Sized {
    pub fn strict_decode<D: Read>(d: D) -> Result<Self, Error>;

    pub fn strict_deserialize(data: impl AsRef<[u8]>) -> Result<Self, Error> { ... }
}

Binary decoding according to the strict rules that usually apply to consensus-critical data structures. May be used for network communications. MUST NOT be used for commitment verification: even if the commit procedure uses StrictEncode, the actual commit verification MUST be done with [CommitVerify], [TryCommitVerify] and [EmbedCommitVerify] traits, which, instead of deserializing (nonce operation for commitments) repeat the commitment procedure for the revealed message and verify it against the provided commitment.

Required methods

pub fn strict_decode<D: Read>(d: D) -> Result<Self, Error>[src]

Decode with the given [std::io::Reader] instance; must either construct an instance or return implementation-specific error type.

Loading content...

Provided methods

pub fn strict_deserialize(data: impl AsRef<[u8]>) -> Result<Self, Error>[src]

Tries to deserialize byte array into the current type using [strict_decode()]

Loading content...

Implementations on Foreign Types

impl StrictDecode for Script[src]

impl StrictDecode for SecretKey[src]

impl StrictDecode for PublicKey[src]

impl StrictDecode for Signature[src]

impl StrictDecode for PublicKey[src]

impl StrictDecode for Network[src]

impl StrictDecode for ChildNumber[src]

impl StrictDecode for DerivationPath[src]

impl StrictDecode for ChainCode[src]

impl StrictDecode for Fingerprint[src]

impl StrictDecode for ExtendedPubKey[src]

impl StrictDecode for ExtendedPrivKey[src]

impl StrictDecode for [u8; 32][src]

impl StrictDecode for Box<[u8]>[src]

impl StrictDecode for String[src]

impl<T> StrictDecode for Option<T> where
    T: StrictDecode
[src]

In terms of strict encoding, Option (optional values) are
represented by a significator byte, which MUST be either 0 (for no value present) or 1, followed by the value strict encoding. For decoding an attempt to read Option from a encoded non-0 or non-1 length Vec will result in Error::WrongOptionalEncoding.

impl<T> StrictDecode for Vec<T> where
    T: StrictDecode
[src]

In terms of strict encoding, Vec is stored in form of usize-encoded length (see StrictEncode implementation for usize type for encoding platform-independent constant-length encoding rules) followed by a consequently-encoded vec items, according to their type.

An attempt to encode Vec with more items than can fit in usize encoding rules will result in Error::ExceedMaxItems.

impl<T> StrictDecode for HashSet<T> where
    T: StrictDecode + Eq + Ord + Hash + Debug
[src]

Strict decoding of a unique value collection represented by a rust HashSet type is performed alike Vec decoding with the only exception: if the repeated value met a Error::RepeatedValue is returned.

impl<T> StrictDecode for BTreeSet<T> where
    T: StrictDecode + Eq + Ord + Debug
[src]

Strict decoding of a unique value collection represented by a rust BTreeSet type is performed alike Vec decoding with the only exception: if the repeated value met a Error::RepeatedValue is returned.

impl<T> StrictDecode for HashMap<usize, T> where
    T: StrictDecode + Clone
[src]

LNP/BP library uses HashMap<usize, T: StrictEncode>s to encode ordered lists, where the position of the list item must be fixed, since the item is referenced from elsewhere by its index. Thus, the library does not supports and recommends not to support strict encoding of any other HashMap variants.

Strict encoding of the HashMap<usize, T> type is performed by converting into a fixed-order Vec<T> and serializing it according to the Vec strict encoding rules. This operation is internally performed via conversion into BTreeMap<usize, T: StrictEncode>.

impl<K, V> StrictDecode for BTreeMap<K, V> where
    K: StrictDecode + Ord + Clone,
    V: StrictDecode + Clone
[src]

LNP/BP library uses BTreeMap<usize, T: StrictEncode>s to encode ordered lists, where the position of the list item must be fixed, since the item is referenced from elsewhere by its index. Thus, the library does not supports and recommends not to support strict encoding of any other BTreeMap variants.

Strict encoding of the BTreeMap<usize, T> type is performed by converting into a fixed-order Vec<T> and serializing it according to the Vec strict encoding rules.

impl<K, V> StrictDecode for (K, V) where
    K: StrictDecode + Clone,
    V: StrictDecode + Clone
[src]

Two-component tuples are decoded as they were fields in the parent data structure

impl StrictDecode for bool[src]

impl StrictDecode for usize[src]

impl StrictDecode for f32[src]

impl StrictDecode for f64[src]

impl StrictDecode for Duration[src]

impl StrictDecode for NaiveDateTime[src]

impl<T> StrictDecode for Holder<T, Wrapped> where
    T: Wrapper,
    T::Inner: StrictDecode
[src]

impl<T> StrictDecode for Holder<T, HashFixedBytes> where
    T: Hash, 
[src]

impl<T> StrictDecode for Holder<T, BitcoinConsensus> where
    T: Decodable
[src]

impl<T> StrictDecode for Holder<T, UsingUniformAddr> where
    T: Uniform
[src]

Loading content...

Implementors

impl StrictDecode for RawAddr[src]

impl StrictDecode for RawUniformAddr[src]

impl<T> StrictDecode for T where
    T: Strategy,
    Holder<T, <T as Strategy>::Strategy>: StrictDecode
[src]

Loading content...