use crate::FromClvmError;
pub trait ClvmDecoder {
type Node: Clone;
fn decode_atom(&self, node: &Self::Node) -> Result<&[u8], FromClvmError>;
fn decode_pair(&self, node: &Self::Node) -> Result<(Self::Node, Self::Node), FromClvmError>;
/// 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.
fn clone_node(&self, node: &Self::Node) -> Self::Node {
node.clone()
}
}