Skip to main content

CodecTranscodeEncoder

Struct CodecTranscodeEncoder 

Source
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,

Source

pub fn new(codec: C) -> Self

Creates a buffered encoder backed by codec.

§Parameters
  • codec: Low-level codec used to encode values.
§Returns

Returns a buffered encoder adapter for the supplied codec.

Source

pub fn codec(&self) -> &C

Borrows the codec without allocating or changing stream state.

§Returns

The wrapped codec, borrowed for the lifetime of self.

Source

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.

Source

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>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C> Default for CodecTranscodeEncoder<C>
where C: Codec + Default,

Source§

fn default() -> Self

Creates a default codec-backed buffered encoder.

§Returns

Returns an encoder backed by C::default().

Source§

impl<C> TranscodeEncoder for CodecTranscodeEncoder<C>
where C: Codec,

Source§

type EncodeError = <C as Codec>::EncodeError

Codec-specific encoding failure carried by the adapter.

Source§

impl<C> Transcoder for CodecTranscodeEncoder<C>
where C: Codec,

Source§

type Input = <C as Codec>::Value

Values accepted by the wrapped codec.

Source§

type Output = <C as Codec>::Unit

Representation units emitted by the wrapped codec.

Source§

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>

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>

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>

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>>

Runs before-reset cleanup and emits stream-start output.

§Parameters
  • output: Destination for codec reset units.
  • output_index: Start position in output.
§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>>

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>>

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>

Returns an upper bound for a complete reset -> transcode -> finish stream. Read more
Source§

fn transcode_eof( &mut self, input: &[Self::Input], input_index: usize, output: &mut [Self::Output], output_index: usize, ) -> Result<TranscodeProgress, Self::Error>

Converts source units after the caller has established end of input. Read more
Source§

fn transcode_complete_into( &mut self, input: &[Self::Input], output: &mut [Self::Output], ) -> Result<usize, Self::Error>

Runs a complete one-shot reset -> transcode -> finish stream. Read more

Auto Trait Implementations§

§

impl<C> Freeze for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: Freeze,

§

impl<C> RefUnwindSafe for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: RefUnwindSafe,

§

impl<C> Send for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: Send,

§

impl<C> Sync for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: Sync,

§

impl<C> Unpin for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: Unpin,

§

impl<C> UnsafeUnpin for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: UnsafeUnpin,

§

impl<C> UnwindSafe for CodecTranscodeEncoder<C>
where TranscodeEncodeEngine<C, CodecTranscodeEncodeHooks>: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.