Skip to main content

Decoder

Struct Decoder 

Source
pub struct Decoder<'a, T> { /* private fields */ }
Expand description

ANS decoder that reconstructs symbols from a token stream.

Tokens must be provided in the reverse of the order they were emitted by the Encoder. After all symbols have been decoded, call finish to verify the decoder returned to its initial state.

Implementations§

Source§

impl<'a, T> Decoder<'a, T>
where T: Eq + Hash + Copy,

Source

pub fn new(ctx: &'a Context<T>) -> Self

Creates a new decoder bound to the given context.

Source

pub fn decode(&mut self, tokens: impl Iterator<Item = u32>) -> Option<T>

Decodes one symbol, pulling additional tokens from tokens as needed.

Returns None when the token stream is exhausted.

Source

pub fn decode_all( &mut self, tokens: impl Iterator<Item = u32>, extend: &mut impl Extend<T>, )

Decodes all remaining symbols from tokens and appends them to extend.

Source

pub fn finish(&self) -> Result<(), DecodeError>

Verifies that the decoder ended in the expected final state.

Returns Err(DecodeError::Incomplete) if the internal state does not match the encoder’s initial state, which typically indicates corrupted data.

Auto Trait Implementations§

§

impl<'a, T> Freeze for Decoder<'a, T>

§

impl<'a, T> RefUnwindSafe for Decoder<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for Decoder<'a, T>
where T: Sync,

§

impl<'a, T> Sync for Decoder<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for Decoder<'a, T>

§

impl<'a, T> UnsafeUnpin for Decoder<'a, T>

§

impl<'a, T> UnwindSafe for Decoder<'a, T>
where T: RefUnwindSafe,

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

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.