use core::num::NonZeroUsize;
use super::super::super::engine::DecodeContext;
use super::super::super::engine::DecodeInvalidAction;
use super::super::super::engine::TranscodeDecodeHooks;
use crate::CapacityError;
use crate::Codec;
use crate::TranscodeDecodeErrorOf;
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub(in crate::transcode) struct CodecTranscodeDecodeHooks;
impl<C> TranscodeDecodeHooks<C> for CodecTranscodeDecodeHooks
where
C: Codec,
{
#[inline]
fn max_transcode_output_len(&self, _codec: &C, input_len: usize) -> Result<usize, CapacityError> {
Ok(input_len.div_ceil(C::MIN_UNITS_PER_VALUE))
}
#[inline]
fn handle_invalid_decode(
&mut self,
_codec: &mut C,
_error: &C::DecodeError,
_consumed: Option<NonZeroUsize>,
_context: DecodeContext,
) -> Result<DecodeInvalidAction<C::Value>, TranscodeDecodeErrorOf<C>> {
Ok(DecodeInvalidAction::Reject)
}
}