1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
//! `Ipld` codecs.
use crate::error::BlockError;
use crate::ipld::Ipld;
use std::error::Error;

/// Codec trait.
pub trait Codec {
    /// Codec version.
    const VERSION: cid::Version;
    /// Codec code.
    const CODEC: cid::Codec;
    /// Error type.
    type Error: Error + Into<BlockError>;
    /// Encode function.
    fn encode(ipld: &Ipld) -> Result<Box<[u8]>, Self::Error>;
    /// Decode function.
    fn decode(data: &[u8]) -> Result<Ipld, Self::Error>;
}