use super::{
codec_transcode_decode_hooks::CodecTranscodeDecodeHooks,
codec_transcode_encode_hooks::CodecTranscodeEncodeHooks,
};
use crate::{
Codec,
CodecConvertError,
CodecDecodeError,
CodecEncodeError,
TranscodeConvertHooks,
};
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub(in crate::transcode) struct CodecTranscodeConvertHooks;
impl CodecTranscodeConvertHooks {
#[must_use]
#[inline(always)]
pub(in crate::transcode) const fn new() -> Self {
Self
}
}
impl<D, E> TranscodeConvertHooks<D, E> for CodecTranscodeConvertHooks
where
D: Codec,
E: Codec<Value = D::Value>,
{
type DecodeError = CodecDecodeError<D::DecodeError>;
type DecodeHooks = CodecTranscodeDecodeHooks;
type EncodeError = CodecEncodeError<E::EncodeError>;
type EncodeHooks = CodecTranscodeEncodeHooks;
type Error = CodecConvertError<D::DecodeError, E::EncodeError>;
#[inline(always)]
fn create_decode_hooks(
&self,
_decode_codec: &D,
_encode_codec: &E,
) -> Self::DecodeHooks {
CodecTranscodeDecodeHooks
}
#[inline(always)]
fn create_encode_hooks(
&self,
_decode_codec: &D,
_encode_codec: &E,
) -> Self::EncodeHooks {
CodecTranscodeEncodeHooks
}
#[inline(always)]
fn map_decode_error(&self, error: Self::DecodeError) -> Self::Error {
CodecConvertError::decode(error)
}
#[inline]
fn map_encode_error(&self, error: Self::EncodeError) -> Self::Error {
CodecConvertError::encode(error)
}
#[inline(always)]
fn reset(&mut self) {}
}