pub struct CodecTranscodeDecoder<C> { /* private fields */ }Expand description
Decodes encoded units into caller-provided value buffers by using a
Codec.
CodecTranscodeDecoder is a policy-free bridge from the low-level unchecked
Codec contract to Transcoder and TranscodeDecoder. It
leaves incomplete input tails in the caller-provided input slice while the
stream remains open. Call Transcoder::transcode_eof after upstream EOF
so codecs can apply their Codec::decode_eof policy to a trailing prefix.
§Type Parameters
C: Low-level codec used to decode values.
§Examples
use qubit_codec::{Codec, CodecTranscodeDecoder};
fn make_decoder<C: Codec>(codec: C) -> CodecTranscodeDecoder<C> {
CodecTranscodeDecoder::new(codec)
}Implementations§
Source§impl<C> CodecTranscodeDecoder<C>where
C: Codec,
impl<C> CodecTranscodeDecoder<C>where
C: Codec,
Sourcepub fn codec_mut(&mut self) -> &mut C
pub fn codec_mut(&mut self) -> &mut C
Returns a mutable reference to the wrapped codec.
Mutating a codec during an active stream can invalidate that stream’s assumptions; reset the adapter before continuing with the new codec configuration.
Sourcepub fn into_codec(self) -> C
pub fn into_codec(self) -> C
Consumes the adapter and returns its wrapped codec.
Any buffered lifecycle state and internal hooks are discarded.
Trait Implementations§
Source§impl<C: Debug> Debug for CodecTranscodeDecoder<C>
impl<C: Debug> Debug for CodecTranscodeDecoder<C>
Source§impl<C: Default> Default for CodecTranscodeDecoder<C>
impl<C: Default> Default for CodecTranscodeDecoder<C>
Source§fn default() -> CodecTranscodeDecoder<C>
fn default() -> CodecTranscodeDecoder<C>
Source§impl<C> TranscodeDecoder for CodecTranscodeDecoder<C>where
C: Codec,
impl<C> TranscodeDecoder for CodecTranscodeDecoder<C>where
C: Codec,
Source§type DecodeError = <C as Codec>::DecodeError
type DecodeError = <C as Codec>::DecodeError
Source§impl<C> Transcoder for CodecTranscodeDecoder<C>where
C: Codec,
impl<C> Transcoder for CodecTranscodeDecoder<C>where
C: Codec,
Source§fn max_transcode_output_len(
&self,
input_len: usize,
) -> Result<usize, CapacityError>
fn max_transcode_output_len( &self, input_len: usize, ) -> Result<usize, CapacityError>
Source§fn max_finish_output_len(&self) -> Result<usize, CapacityError>
fn max_finish_output_len(&self) -> Result<usize, CapacityError>
Returns the global maximum values emitted by finishing internal state.
§Returns
Returns the number of values that may still be emitted by finishing state.
Source§fn max_reset_output_len(&self) -> Result<usize, CapacityError>
fn max_reset_output_len(&self) -> Result<usize, CapacityError>
Returns the global maximum values emitted when resetting internal state.
Source§fn reset(
&mut self,
output: &mut [C::Value],
output_index: usize,
) -> Result<usize, TranscodeDecodeErrorOf<C>>
fn reset( &mut self, output: &mut [C::Value], output_index: usize, ) -> Result<usize, TranscodeDecodeErrorOf<C>>
Runs before-reset cleanup for decoder state.
Source§fn transcode(
&mut self,
input: &[C::Unit],
input_index: usize,
output: &mut [C::Value],
output_index: usize,
) -> Result<TranscodeProgress, TranscodeDecodeErrorOf<C>>
fn transcode( &mut self, input: &[C::Unit], input_index: usize, output: &mut [C::Value], output_index: usize, ) -> Result<TranscodeProgress, TranscodeDecodeErrorOf<C>>
Decodes source units into logical values.
§Parameters
input: Source unit slice.input_index: Absolute source index where decoding starts.output: Destination value slice.output_index: Absolute output value index where writing starts.
§Returns
Returns conversion progress for consumed and written counters.
§Errors
Returns a decode error when indices are invalid or when conversion fails under hook policy.
Source§fn transcode_eof(
&mut self,
input: &[C::Unit],
input_index: usize,
output: &mut [C::Value],
output_index: usize,
) -> Result<TranscodeProgress, TranscodeDecodeErrorOf<C>>
fn transcode_eof( &mut self, input: &[C::Unit], input_index: usize, output: &mut [C::Value], output_index: usize, ) -> Result<TranscodeProgress, TranscodeDecodeErrorOf<C>>
Transcodes an input segment while marking it as the end of the stream.
This forwarding implementation lets the engine apply EOF-specific decoder behavior before returning progress to the caller.
Source§fn finish(
&mut self,
output: &mut [C::Value],
output_index: usize,
) -> Result<usize, TranscodeDecodeErrorOf<C>>
fn finish( &mut self, output: &mut [C::Value], output_index: usize, ) -> Result<usize, TranscodeDecodeErrorOf<C>>
Finishes internally retained output after EOF.
§Parameters
output: Destination value slice for final retained values.output_index: Absolute output value index where writing starts.
§Returns
Returns the number of values written by finalization.
§Errors
Returns a finish error if finalization cannot complete.
Source§type Error = TranscodeDecodeError<<C as Codec>::DecodeError>
type Error = TranscodeDecodeError<<C as Codec>::DecodeError>
Source§fn max_total_output_len(&self, input_len: usize) -> Result<usize, CapacityError>
fn max_total_output_len(&self, input_len: usize) -> Result<usize, CapacityError>
reset -> transcode -> finish
stream. Read more