pub trait CodecExt: Codec {
// Required methods
fn encode<S>(dag: &S) -> Result<Box<[u8]>, Self::Error>
where S: Serialize;
fn decode<'de, D>(bytes: &'de [u8]) -> Result<D, Self::Error>
where D: Deserialize<'de>;
// Provided methods
fn write<S, W>(dag: &S, writer: W) -> Result<(), Self::Error>
where S: Serialize,
W: Write { ... }
fn read<D, R>(reader: R) -> Result<D, Self::Error>
where D: DeserializeOwned,
R: Read { ... }
fn serialize_bytes<S>(
bytes: &[u8],
serializer: S,
) -> Result<S::Ok, S::Error>
where S: Serializer { ... }
fn serialize_link<S>(cid: &Cid, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer { ... }
fn deserialize_unknown<'de, D, V>(
deserializer: D,
visitor: V,
) -> Result<V::Value, D::Error>
where D: Deserializer<'de>,
V: IpldVisitor<'de> { ... }
}
Expand description
Extension trait for Codec
s that can delegate to serde
.
Required Methods§
Provided Methods§
Sourcefn write<S, W>(dag: &S, writer: W) -> Result<(), Self::Error>
fn write<S, W>(dag: &S, writer: W) -> Result<(), Self::Error>
Given a Write
, serialize it to bytes.
Panics by default.
Sourcefn read<D, R>(reader: R) -> Result<D, Self::Error>where
D: DeserializeOwned,
R: Read,
fn read<D, R>(reader: R) -> Result<D, Self::Error>where
D: DeserializeOwned,
R: Read,
Given a Read
, deserialize it to a dag.
Panics by default.
Sourcefn serialize_bytes<S>(bytes: &[u8], serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_bytes<S>(bytes: &[u8], serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Because some codecs are text-based rather than binary, Codec
s may define
custom default behaviour for serializing bytes.
Sourcefn serialize_link<S>(cid: &Cid, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_link<S>(cid: &Cid, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Serialize an IPLD link.
Default behaviour is to serialize the link directly as bytes.
Sourcefn deserialize_unknown<'de, D, V>(
deserializer: D,
visitor: V,
) -> Result<V::Value, D::Error>where
D: Deserializer<'de>,
V: IpldVisitor<'de>,
fn deserialize_unknown<'de, D, V>(
deserializer: D,
visitor: V,
) -> Result<V::Value, D::Error>where
D: Deserializer<'de>,
V: IpldVisitor<'de>,
Deserialize an unknown Serde type.
Because the IPLD data model doesn’t map 1:1 with the Serde data model,
a type’s Visitor
may be asked to visit an enum or a newtype struct.
In these cases, the type can hand off
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.