Trait clvm_traits::ClvmDecoder

source ·
pub trait ClvmDecoder: Sized {
    type Node: Clone + FromClvm<Self>;

    // Required methods
    fn decode_atom(&self, node: &Self::Node) -> Result<Atom<'_>, FromClvmError>;
    fn decode_pair(
        &self,
        node: &Self::Node,
    ) -> Result<(Self::Node, Self::Node), FromClvmError>;

    // Provided methods
    fn decode_bigint(&self, node: &Self::Node) -> Result<BigInt, FromClvmError> { ... }
    fn decode_curried_arg(
        &self,
        node: &Self::Node,
    ) -> Result<(Self::Node, Self::Node), FromClvmError> { ... }
    fn clone_node(&self, node: &Self::Node) -> Self::Node { ... }
}

Required Associated Types§

source

type Node: Clone + FromClvm<Self>

Required Methods§

source

fn decode_atom(&self, node: &Self::Node) -> Result<Atom<'_>, FromClvmError>

source

fn decode_pair( &self, node: &Self::Node, ) -> Result<(Self::Node, Self::Node), FromClvmError>

Provided Methods§

source

fn decode_bigint(&self, node: &Self::Node) -> Result<BigInt, FromClvmError>

source

fn decode_curried_arg( &self, node: &Self::Node, ) -> Result<(Self::Node, Self::Node), FromClvmError>

source

fn clone_node(&self, node: &Self::Node) -> Self::Node

This is a helper function that just calls clone on the node. It’s required only because the compiler can’t infer that N is Clone, since there’s no Clone bound on the FromClvm trait.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ClvmDecoder for Allocator

source§

type Node = NodePtr

source§

fn decode_atom(&self, node: &Self::Node) -> Result<Atom<'_>, FromClvmError>

source§

fn decode_pair( &self, node: &Self::Node, ) -> Result<(Self::Node, Self::Node), FromClvmError>

source§

fn decode_bigint(&self, node: &Self::Node) -> Result<BigInt, FromClvmError>

Implementors§