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}