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

    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]
Notable traits for &'_ [u8]
impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
;
fn leaf_node(partial: Partial<'_>, value: Value<'_>) -> Vec<u8>
Notable traits for Vec<u8, A>
impl<A> Write for Vec<u8, A> where
    A: Allocator
;
fn extension_node(
        partial: impl Iterator<Item = u8>,
        number_nibble: usize,
        child_ref: ChildReference<Self::HashOut>
    ) -> Vec<u8>
Notable traits for Vec<u8, A>
impl<A> Write for Vec<u8, A> where
    A: Allocator
;
fn branch_node(
        children: impl Iterator<Item = impl Borrow<Option<ChildReference<Self::HashOut>>>>,
        value: Option<Value<'_>>
    ) -> Vec<u8>
Notable traits for Vec<u8, A>
impl<A> Write for Vec<u8, A> where
    A: Allocator
;
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>
Notable traits for Vec<u8, A>
impl<A> Write for Vec<u8, A> where
    A: Allocator
; 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.

Associated Types

Codec error type.

Output type of encoded node hasher.

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

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