Skip to main content

VarCode

Trait VarCode 

Source
pub trait VarCode {
    // Required methods
    fn var_bit_len(&self) -> usize;
    fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>;
    fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>
       where Self: Sized;
}
Expand description

A trait for variable-length, bit-level encoding and decoding.

Types implementing VarCode can serialize themselves into a variable number of bits via WriteBits and deserialize from ReadBits. A blanket implementation is provided for all FixedCode types, writing their fixed-size representation as whole bytes.

Required Methods§

Source

fn var_bit_len(&self) -> usize

Source

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>
where Self: Sized,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl VarCode for ()

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, _write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(_read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> VarCode for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
where A: VarCode, B: VarCode, C: VarCode, D: VarCode, E: VarCode, F: VarCode, G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> VarCode for (B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
where B: VarCode, C: VarCode, D: VarCode, E: VarCode, F: VarCode, G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<C, D, E, F, G, H, I, J, K, L, M, N, O, P> VarCode for (C, D, E, F, G, H, I, J, K, L, M, N, O, P)
where C: VarCode, D: VarCode, E: VarCode, F: VarCode, G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<D, E, F, G, H, I, J, K, L, M, N, O, P> VarCode for (D, E, F, G, H, I, J, K, L, M, N, O, P)
where D: VarCode, E: VarCode, F: VarCode, G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<E, F, G, H, I, J, K, L, M, N, O, P> VarCode for (E, F, G, H, I, J, K, L, M, N, O, P)
where E: VarCode, F: VarCode, G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<F, G, H, I, J, K, L, M, N, O, P> VarCode for (F, G, H, I, J, K, L, M, N, O, P)
where F: VarCode, G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<G, H, I, J, K, L, M, N, O, P> VarCode for (G, H, I, J, K, L, M, N, O, P)
where G: VarCode, H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<H, I, J, K, L, M, N, O, P> VarCode for (H, I, J, K, L, M, N, O, P)
where H: VarCode, I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<I, J, K, L, M, N, O, P> VarCode for (I, J, K, L, M, N, O, P)
where I: VarCode, J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<J, K, L, M, N, O, P> VarCode for (J, K, L, M, N, O, P)
where J: VarCode, K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<K, L, M, N, O, P> VarCode for (K, L, M, N, O, P)
where K: VarCode, L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<L, M, N, O, P> VarCode for (L, M, N, O, P)
where L: VarCode, M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<M, N, O, P> VarCode for (M, N, O, P)
where M: VarCode, N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<N, O, P> VarCode for (N, O, P)
where N: VarCode, O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<O, P> VarCode for (O, P)
where O: VarCode, P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Source§

impl<P> VarCode for (P,)
where P: VarCode,

Source§

fn var_bit_len(&self) -> usize

Source§

fn var_write(&self, write: &mut WriteBits<impl Write>) -> Result<()>

Source§

fn var_read(read: &mut ReadBits<impl Read>) -> Result<Self>

Implementors§

Source§

impl<T> VarCode for jkl::lz77::Token<T>
where T: VarCode,

Source§

impl<T> VarCode for Context<T>
where T: Copy + Default + Ord + Hash + Delta + VarCode,

Source§

impl<T> VarCode for jkl::lz78::Token<T>
where T: VarCode,

Source§

impl<T> VarCode for Rle<T>
where T: VarCode,

Source§

impl<T> VarCode for Vle<T>
where T: Unsigned,

Source§

impl<T> VarCode for T
where T: FixedCode,