Skip to main content

CodecValueEncoder

Struct CodecValueEncoder 

Source
pub struct CodecValueEncoder<C> { /* private fields */ }
Expand description

Encodes one borrowed value into owned units by using a Codec.

CodecValueEncoder is the default bridge from the low-level unchecked Codec contract to the convenience-layer ValueEncoder contract. Each call emits stream-start output through Codec::encode_reset, encodes one value through Codec::encode, finishes encode-side state through Codec::encode_finish, and returns the owned output truncated to the units actually written.

§Type Parameters

  • C: Low-level codec used to encode one value.

§Examples

use qubit_codec::{Codec, CodecValueEncoder};

fn make_encoder<C: Codec>(codec: C) -> CodecValueEncoder<C> {
    CodecValueEncoder::new(codec)
}

Implementations§

Source§

impl<C> CodecValueEncoder<C>
where C: Codec,

Source

pub fn new(codec: C) -> Self

Creates an encoder backed by codec.

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

Returns a value encoder adapter for the supplied codec.

§Compile-Time Checks

Fails to compile when the supplied codec declares a zero decode unit bound or when Codec::MIN_UNITS_PER_VALUE exceeds Codec::MAX_DECODE_UNITS_PER_VALUE. The encode bound may be zero for a fully buffered codec.

Source

pub const fn codec(&self) -> &C

Returns a shared reference to the wrapped codec.

Source

pub fn codec_mut(&mut self) -> &mut C

Returns a mutable reference to the wrapped codec.

The next value operation starts a fresh codec lifecycle, so mutations are applied to the following operation.

Source

pub fn into_codec(self) -> C

Consumes the adapter and returns its wrapped codec.

Source

pub fn encode_into( &mut self, input: &C::Value, output: &mut Vec<C::Unit>, ) -> Result<usize, TranscodeEncodeErrorOf<C>>
where C::Unit: Default,

Encodes one borrowed value and appends the emitted units to output.

This method is the reusable-buffer counterpart of ValueEncoder::encode. It emits stream-start output through Codec::encode_reset, encodes input through Codec::encode, and finishes encode-side state through Codec::encode_finish, appending only the units actually written. When encoding fails, the vector length is restored to its original value.

§Parameters
  • input: Value to encode.
  • output: Destination vector receiving appended encoded units.
§Returns

Returns the number of units appended to output.

§Errors

Returns the wrapped codec’s encode error when reset output, input, or finish output cannot be represented. Returns a framework error when output length arithmetic overflows.

§Panics

Panics when the wrapped codec reports more reset or finish output than its declared bounds, when Codec::encode_len exceeds Codec::MAX_ENCODE_UNITS_PER_VALUE, or when encoding writes a different value width than Codec::encode_len.

Trait Implementations§

Source§

impl<C> Debug for CodecValueEncoder<C>
where C: Codec + Debug,

Source§

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

Formats the encoder without requiring finished values to be printable.

Source§

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

Source§

fn default() -> Self

Creates an encoder from the default codec.

Source§

impl<C> ValueEncoder<<C as Codec>::Value> for CodecValueEncoder<C>
where C: Codec, C::Unit: Default,

Source§

fn encode(&mut self, input: &C::Value) -> Result<Self::Output, Self::Error>

Encodes one borrowed value into owned units.

§Parameters
  • input: Value to encode.
§Returns

Returns stream-start output followed by the units written for input and any encode-finish output.

§Errors

Returns the wrapped codec’s encode error when reset output, input, or finish output cannot be represented.

§Panics

Panics when the wrapped codec reports more reset or finish output than its declared bounds, or a value width different from Codec::encode_len.

Source§

type Output = Vec<<C as Codec>::Unit>

Encoded output type.
Source§

type Error = TranscodeEncodeError<<C as Codec>::EncodeError, <C as Codec>::Value>

Encoding error type.

Auto Trait Implementations§

§

impl<C> Freeze for CodecValueEncoder<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for CodecValueEncoder<C>
where C: RefUnwindSafe,

§

impl<C> Send for CodecValueEncoder<C>
where C: Send,

§

impl<C> Sync for CodecValueEncoder<C>
where C: Sync,

§

impl<C> Unpin for CodecValueEncoder<C>
where C: Unpin,

§

impl<C> UnsafeUnpin for CodecValueEncoder<C>
where C: UnsafeUnpin,

§

impl<C> UnwindSafe for CodecValueEncoder<C>
where C: 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.