pub struct CodecTranscodeEncoder<C> { /* private fields */ }Expand description
Encodes values into caller-provided output units by using a Codec.
CodecTranscodeEncoder is the default bridge from the low-level unchecked
Codec contract to the buffered Transcoder and
TranscodeEncoder contracts. It encodes complete values only; when the
remaining output capacity is smaller than codec.encode_len(value), it
stops before consuming that input value and reports
crate::TranscodeStatus::NeedOutput.
§Type Parameters
C: Low-level codec used to encode values.
§Examples
use core::convert::Infallible;
use core::num::NonZeroUsize;
use qubit_codec::Codec;
use qubit_codec::CodecTranscodeEncoder;
use qubit_codec::DecodeFailure;
use qubit_codec::Transcoder;
let mut encoder = CodecTranscodeEncoder::new(ByteCodec);
let mut output = [0; 2];
assert_eq!(encoder.reset(&mut output, 0).unwrap(), 0);
let progress = encoder.transcode(&[7, 9], 0, &mut output, 0).unwrap();
assert_eq!(progress.written(), 2);
assert_eq!(output, [7, 9]);Implementations§
Source§impl<C> CodecTranscodeEncoder<C>where
C: Codec,
impl<C> CodecTranscodeEncoder<C>where
C: Codec,
Sourcepub fn codec(&self) -> &C
pub fn codec(&self) -> &C
Borrows the codec without allocating or changing stream state.
§Returns
The wrapped codec, borrowed for the lifetime of self.
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.
§Returns
An exclusive borrow of the wrapped codec tied to self.
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.
§Returns
The owned codec, without resetting or finishing it.
Trait Implementations§
Source§impl<C: Debug> Debug for CodecTranscodeEncoder<C>
impl<C: Debug> Debug for CodecTranscodeEncoder<C>
Source§impl<C> Default for CodecTranscodeEncoder<C>
impl<C> Default for CodecTranscodeEncoder<C>
Source§impl<C> TranscodeEncoder for CodecTranscodeEncoder<C>where
C: Codec,
impl<C> TranscodeEncoder for CodecTranscodeEncoder<C>where
C: Codec,
Source§type EncodeError = <C as Codec>::EncodeError
type EncodeError = <C as Codec>::EncodeError
Codec-specific encoding failure carried by the adapter.
Source§impl<C> Transcoder for CodecTranscodeEncoder<C>where
C: Codec,
impl<C> Transcoder for CodecTranscodeEncoder<C>where
C: Codec,
Source§type Error = TranscodeEncodeError<<C as Codec>::EncodeError, <C as Codec>::Value>
type Error = TranscodeEncodeError<<C as Codec>::EncodeError, <C as Codec>::Value>
Domain, contract, and codec failures during buffered encoding.
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>
Gets the maximum number of output units needed for input_len
values.
§Parameters
input_len: Logical input values the caller plans to encode.
§Returns
A conservative upper bound for output units.
§Errors
Returns CapacityError if the engine cannot represent the bound in
usize.
Source§fn max_reset_output_len(&self) -> Result<usize, CapacityError>
fn max_reset_output_len(&self) -> Result<usize, CapacityError>
Gets the global maximum units emitted when resetting internal state.
§Returns
The maximum units emitted when resetting internal state.
§Errors
Returns CapacityError if the engine cannot represent the bound in
usize.
Source§fn max_finish_output_len(&self) -> Result<usize, CapacityError>
fn max_finish_output_len(&self) -> Result<usize, CapacityError>
Gets the global maximum units emitted by finishing internal state.
§Returns
The number of units that may be emitted by finishing state.
§Errors
Returns CapacityError if the engine cannot represent the bound in
usize.
Source§fn reset(
&mut self,
output: &mut [C::Unit],
output_index: usize,
) -> Result<usize, TranscodeEncodeErrorOf<C>>
fn reset( &mut self, output: &mut [C::Unit], output_index: usize, ) -> Result<usize, TranscodeEncodeErrorOf<C>>
Runs before-reset cleanup and emits stream-start output.
§Parameters
output: Destination for codec reset units.output_index: Start position inoutput.
§Returns
The number of reset units written; previous lifecycle state is discarded.
§Errors
Returns an error for an invalid index, insufficient reset capacity, a violated codec contract, or a codec reset failure.
Source§fn transcode(
&mut self,
input: &[C::Value],
input_index: usize,
output: &mut [C::Unit],
output_index: usize,
) -> Result<TranscodeProgress, TranscodeEncodeErrorOf<C>>
fn transcode( &mut self, input: &[C::Value], input_index: usize, output: &mut [C::Unit], output_index: usize, ) -> Result<TranscodeProgress, TranscodeEncodeErrorOf<C>>
Encodes values into the supplied output buffer.
§Parameters
input: Input value slice.input_index: Absolute input index where encoding starts.output: Destination unit slice.output_index: Absolute output index where writing starts.
§Returns
Returns conversion progress for consumed input and produced output units.
§Errors
Returns an encode error when indices are invalid or when encoding cannot continue under current policy.
Source§fn finish(
&mut self,
output: &mut [C::Unit],
output_index: usize,
) -> Result<usize, TranscodeEncodeErrorOf<C>>
fn finish( &mut self, output: &mut [C::Unit], output_index: usize, ) -> Result<usize, TranscodeEncodeErrorOf<C>>
Finishes internally retained output after EOF.
§Parameters
output: Destination unit slice for finalization output.output_index: Absolute output index where writing starts.
§Returns
Returns the number of units written by finalization.
§Errors
Returns a finish error if retained output cannot be fully emitted.
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