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