use super::super::engine::TranscodeDecodeHooks;
use super::super::{
decode_context::DecodeContext,
decode_invalid_action::DecodeInvalidAction,
};
use core::num::NonZeroUsize;
use crate::{
Codec,
CodecDecodeError,
};
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub(in crate::transcode) struct CodecTranscodeDecodeHooks;
impl<C> TranscodeDecodeHooks<C> for CodecTranscodeDecodeHooks
where
C: Codec,
{
type Error = CodecDecodeError<C::DecodeError>;
#[inline(always)]
fn handle_invalid_decode(
&mut self,
_codec: &mut C,
error: C::DecodeError,
_consumed: Option<NonZeroUsize>,
context: DecodeContext,
) -> Result<DecodeInvalidAction<C::Value>, Self::Error> {
Err(CodecDecodeError::decode(error, context.input_index()))
}
}