libipld_base/
codec.rs

1//! `Ipld` codecs.
2use crate::error::BlockError;
3use crate::ipld::Ipld;
4use std::error::Error;
5
6/// Codec trait.
7pub trait Codec {
8    /// Codec version.
9    const VERSION: cid::Version;
10    /// Codec code.
11    const CODEC: cid::Codec;
12    /// Error type.
13    type Error: Error + Into<BlockError>;
14    /// Encode function.
15    fn encode(ipld: &Ipld) -> Result<Box<[u8]>, Self::Error>;
16    /// Decode function.
17    fn decode(data: &[u8]) -> Result<Ipld, Self::Error>;
18}