pub struct CodecTranscodeConverter<D, E>{ /* private fields */ }Expand description
Converts source units to target units through a decoded value by using codecs.
The converter decodes one source value with the decoder codec, then encodes that value with the encoder codec. If the current output buffer cannot hold the encoded value, the already decoded value is retained by the common converter engine and must be drained before more source input is consumed. Incomplete source tails are left in the caller-provided input slice; callers own input-buffer refill and EOF incomplete-tail policy.
§Type Parameters
D: Low-level codec used to decode source units.E: Low-level codec used to encode target units.
Implementations§
Source§impl<D, E> CodecTranscodeConverter<D, E>
impl<D, E> CodecTranscodeConverter<D, E>
Sourcepub fn max_output_len(&self, input_len: usize) -> Result<usize, CapacityError>
pub fn max_output_len(&self, input_len: usize) -> Result<usize, CapacityError>
Sourcepub fn max_finish_output_len(&self) -> Result<usize, CapacityError>
pub fn max_finish_output_len(&self) -> Result<usize, CapacityError>
Returns the maximum target units emitted by finishing internal state.
§Returns
Returns a conservative upper bound for remaining converter-final output.
Sourcepub fn max_reset_output_len(&self) -> Result<usize, CapacityError>
pub fn max_reset_output_len(&self) -> Result<usize, CapacityError>
Returns the maximum target units emitted when resetting stream state.
Sourcepub fn reset(
&mut self,
output: &mut [E::Unit],
output_index: usize,
) -> Result<usize, TranscodeError<CodecConvertError<<D as Codec>::DecodeError, <E as Codec>::EncodeError>>>
pub fn reset( &mut self, output: &mut [E::Unit], output_index: usize, ) -> Result<usize, TranscodeError<CodecConvertError<<D as Codec>::DecodeError, <E as Codec>::EncodeError>>>
Clears retained pending output and hook state and emits stream-start encode output.
Sourcepub fn transcode(
&mut self,
input: &[D::Unit],
input_index: usize,
output: &mut [E::Unit],
output_index: usize,
) -> Result<TranscodeProgress, TranscodeError<CodecConvertError<<D as Codec>::DecodeError, <E as Codec>::EncodeError>>>
pub fn transcode( &mut self, input: &[D::Unit], input_index: usize, output: &mut [E::Unit], output_index: usize, ) -> Result<TranscodeProgress, TranscodeError<CodecConvertError<<D as Codec>::DecodeError, <E as Codec>::EncodeError>>>
Converts source units into target units.
This is the main streaming operation and does not require D::Value to
implement Default.
§Parameters
input: Source unit slice.input_index: Absolute source index where conversion starts.output: Target unit slice.output_index: Absolute target index where writing starts.
§Returns
Returns conversion progress for consumed/produced counters and stop reason.
§Errors
Returns converter error when source or target indices are invalid, or when decoding/encoding fails under current policy.
Sourcepub fn finish(
&mut self,
output: &mut [E::Unit],
output_index: usize,
) -> Result<usize, TranscodeError<CodecConvertError<<D as Codec>::DecodeError, <E as Codec>::EncodeError>>>
pub fn finish( &mut self, output: &mut [E::Unit], output_index: usize, ) -> Result<usize, TranscodeError<CodecConvertError<<D as Codec>::DecodeError, <E as Codec>::EncodeError>>>
Finishes internally retained output after EOF.
Finalization delegates to the reusable converter engine. It drains retained pending output, encodes source-side decode flush values, and then finishes target-side encode hook state.
§Parameters
output: Target unit slice for finalization output.output_index: Absolute target output index where writing starts.
§Returns
Returns the number of target units written by finalization.
§Errors
Returns a finish error for pending output that cannot be finalized.
Trait Implementations§
Source§impl<D, E> Clone for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Clone,
impl<D, E> Clone for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Clone,
Source§impl<D, E> Debug for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Debug,
impl<D, E> Debug for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Debug,
Source§impl<D, E> Default for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Default,
impl<D, E> Default for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Default,
impl<D, E> Eq for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Eq,
Source§impl<D, E> Hash for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Hash,
impl<D, E> Hash for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: Hash,
Source§impl<D, E> PartialEq for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: PartialEq,
impl<D, E> PartialEq for CodecTranscodeConverter<D, E>where
D: Codec,
E: Codec<Value = D::Value>,
TranscodeConvertEngine<D, E, CodecTranscodeConvertHooks>: PartialEq,
impl<D, E> TranscodeConverter<<D as Codec>::Unit, <E as Codec>::Unit> for CodecTranscodeConverter<D, E>
Source§impl<D, E> Transcoder<<D as Codec>::Unit, <E as Codec>::Unit> for CodecTranscodeConverter<D, E>
impl<D, E> Transcoder<<D as Codec>::Unit, <E as Codec>::Unit> for CodecTranscodeConverter<D, E>
Source§fn max_output_len(&self, input_len: usize) -> Result<usize, CapacityError>
fn max_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 maximum target units emitted by finishing internal state.
§Returns
Returns a conservative upper bound for remaining converter-final output.
Source§fn max_reset_output_len(&self) -> Result<usize, CapacityError>
fn max_reset_output_len(&self) -> Result<usize, CapacityError>
Returns the maximum target units emitted when resetting stream state.
Source§fn reset(
&mut self,
output: &mut [E::Unit],
output_index: usize,
) -> Result<usize, TranscodeError<Self::Error>>
fn reset( &mut self, output: &mut [E::Unit], output_index: usize, ) -> Result<usize, TranscodeError<Self::Error>>
Clears retained pending output, resets component state, and emits stream-start encode output.
Source§fn transcode(
&mut self,
input: &[D::Unit],
input_index: usize,
output: &mut [E::Unit],
output_index: usize,
) -> Result<TranscodeProgress, TranscodeError<Self::Error>>
fn transcode( &mut self, input: &[D::Unit], input_index: usize, output: &mut [E::Unit], output_index: usize, ) -> Result<TranscodeProgress, TranscodeError<Self::Error>>
Converts source units into target units.
§Parameters
input: Source unit slice.input_index: Absolute source index where conversion starts.output: Target unit slice.output_index: Absolute target index where writing starts.
§Returns
Returns conversion progress for consumed/produced counters and stop reason.
§Errors
Returns converter error when source or target indices are invalid, or when decoding/encoding fails under current policy.
Source§fn finish(
&mut self,
output: &mut [E::Unit],
output_index: usize,
) -> Result<usize, TranscodeError<Self::Error>>
fn finish( &mut self, output: &mut [E::Unit], output_index: usize, ) -> Result<usize, TranscodeError<Self::Error>>
Finishes internally retained output after EOF.
§Parameters
output: Target unit slice for finalization output.output_index: Absolute target output index where writing starts.
§Returns
Returns the number of target units written by finalization.
§Errors
Returns a finish error for pending output that cannot be finalized.