use crate::{codec::CodecController, collection::Vector};
pub trait Decode<'de, CC>: Sized
where
CC: CodecController,
{
fn decode(dw: &mut CC::DecodeWrapper<'de, '_, '_>) -> Result<Self, CC::Error>;
}
impl Decode<'_, ()> for &str {
#[inline]
fn decode(_: &mut ()) -> crate::Result<Self> {
Ok("")
}
}
impl Decode<'_, ()> for u32 {
#[inline]
fn decode(_: &mut ()) -> crate::Result<Self> {
Ok(0)
}
}
impl Decode<'_, ()> for u64 {
#[inline]
fn decode(_: &mut ()) -> crate::Result<Self> {
Ok(0)
}
}
pub trait DecodeSeq<'de, CC>: Decode<'de, CC>
where
CC: CodecController,
{
fn decode_seq(
buffer: &mut Vector<Self>,
dw: &mut CC::DecodeWrapper<'de, '_, '_>,
) -> Result<(), CC::Error>;
}
impl DecodeSeq<'_, ()> for &str {
#[inline]
fn decode_seq(_: &mut Vector<Self>, _: &mut ()) -> crate::Result<()> {
Ok(())
}
}
impl DecodeSeq<'_, ()> for u32 {
#[inline]
fn decode_seq(_: &mut Vector<Self>, _: &mut ()) -> crate::Result<()> {
Ok(())
}
}
impl DecodeSeq<'_, ()> for u64 {
#[inline]
fn decode_seq(_: &mut Vector<Self>, _: &mut ()) -> crate::Result<()> {
Ok(())
}
}