Trait trie_db::NodeCodec

source ·
pub trait NodeCodec: Sized {
    type Error: Error;
    type HashOut: AsRef<[u8]> + AsMut<[u8]> + Default + MaybeDebug + PartialEq + Eq + Hash + Send + Sync + Clone + Copy;

    const ESCAPE_HEADER: Option<u8> = None;

    fn hashed_null_node() -> Self::HashOut;
    fn decode_plan(data: &[u8]) -> Result<NodePlan, Self::Error>;
    fn is_empty_node(data: &[u8]) -> bool;
    fn empty_node() -> &'static [u8] ;
    fn leaf_node(
        partial: impl Iterator<Item = u8>,
        number_nibble: usize,
        value: Value<'_>
    ) -> Vec<u8> ; fn extension_node(
        partial: impl Iterator<Item = u8>,
        number_nibble: usize,
        child_ref: ChildReference<Self::HashOut>
    ) -> Vec<u8> ; fn branch_node(
        children: impl Iterator<Item = impl Borrow<Option<ChildReference<Self::HashOut>>>>,
        value: Option<Value<'_>>
    ) -> Vec<u8> ; fn branch_node_nibbled(
        partial: impl Iterator<Item = u8>,
        number_nibble: usize,
        children: impl Iterator<Item = impl Borrow<Option<ChildReference<Self::HashOut>>>>,
        value: Option<Value<'_>>
    ) -> Vec<u8> ; fn decode<'a>(data: &'a [u8]) -> Result<Node<'a>, Self::Error> { ... } }
Expand description

Trait for trie node encoding/decoding. Uses a type parameter to allow registering positions without colling decode plan.

Required Associated Types§

Codec error type.

Output type of encoded node hasher.

Provided Associated Constants§

Escape header byte sequence to indicate next node is a branch or leaf with hash of value, followed by the value node.

Required Methods§

Get the hashed null node.

Decode bytes to a NodePlan. Returns Self::E on failure.

Check if the provided bytes correspond to the codecs “empty” node.

Returns an encoded empty node.

Returns an encoded leaf node

Note that number_nibble is the number of element of the iterator it can possibly be obtain by Iterator size_hint, but for simplicity it is used directly as a parameter.

Returns an encoded extension node

Note that number_nibble is the number of element of the iterator it can possibly be obtain by Iterator size_hint, but for simplicity it is used directly as a parameter.

Returns an encoded branch node. Takes an iterator yielding ChildReference<Self::HashOut> and an optional value.

Returns an encoded branch node with a possible partial path. number_nibble is the partial path length as in extension_node.

Provided Methods§

Decode bytes to a Node. Returns Self::E on failure.

Implementors§