Trait clvm_traits::ClvmEncoder

source ·
pub trait ClvmEncoder: Sized {
    type Node: Clone + ToClvm<Self::Node>;

    // Required methods
    fn encode_atom(&mut self, bytes: &[u8]) -> Result<Self::Node, ToClvmError>;
    fn encode_pair(
        &mut self,
        first: Self::Node,
        rest: Self::Node
    ) -> Result<Self::Node, ToClvmError>;

    // Provided methods
    fn encode_curried_arg(
        &mut self,
        first: Self::Node,
        rest: Self::Node
    ) -> Result<Self::Node, ToClvmError> { ... }
    fn clone_node(&self, node: &Self::Node) -> Self::Node { ... }
}

Required Associated Types§

source

type Node: Clone + ToClvm<Self::Node>

Required Methods§

source

fn encode_atom(&mut self, bytes: &[u8]) -> Result<Self::Node, ToClvmError>

source

fn encode_pair( &mut self, first: Self::Node, rest: Self::Node ) -> Result<Self::Node, ToClvmError>

Provided Methods§

source

fn encode_curried_arg( &mut self, first: Self::Node, rest: Self::Node ) -> Result<Self::Node, ToClvmError>

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 ToClvm trait.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ClvmEncoder for Allocator

§

type Node = NodePtr

source§

fn encode_atom(&mut self, bytes: &[u8]) -> Result<Self::Node, ToClvmError>

source§

fn encode_pair( &mut self, first: Self::Node, rest: Self::Node ) -> Result<Self::Node, ToClvmError>

Implementors§