ClvmDecoder

Trait 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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so 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§