pub trait ClvmEncoder: Sized {
type Node: Clone + ToClvm<Self>;
// Required methods
fn encode_atom(&mut self, atom: Atom<'_>) -> Result<Self::Node, ToClvmError>;
fn encode_pair(
&mut self,
first: Self::Node,
rest: Self::Node,
) -> Result<Self::Node, ToClvmError>;
// Provided methods
fn encode_bigint(
&mut self,
number: BigInt,
) -> Result<Self::Node, ToClvmError> { ... }
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§
Required Methods§
fn encode_atom(&mut self, atom: Atom<'_>) -> Result<Self::Node, ToClvmError>
fn encode_pair( &mut self, first: Self::Node, rest: Self::Node, ) -> Result<Self::Node, ToClvmError>
Provided Methods§
fn encode_bigint(&mut self, number: BigInt) -> Result<Self::Node, ToClvmError>
fn encode_curried_arg( &mut self, first: Self::Node, rest: Self::Node, ) -> Result<Self::Node, ToClvmError>
Sourcefn clone_node(&self, node: &Self::Node) -> Self::Node
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.
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.