pub struct LzfseRingEncoder { /* private fields */ }
Expand description

LZFSE ring encoder.

This implementation builds upon LzfseEncoder with the addition of internal ring buffers that enable efficient IO operations. It can be converted to a mutable LzfseEncoder reference using as_mut().

Implementations§

source§

impl LzfseRingEncoder

source

pub fn encode<I, O>( &mut self, reader: &mut I, writer: &mut O ) -> Result<(u64, u64)>where I: Read, O: Write,

Encode reader into writer returning a tuple (u, v) where u is the number of unencoded bytes read from the reader and v is the number of encoded bytes written into the writer.

Both the reader and writer are accessed efficiently by internal ring buffers, there is no need to wrap them in BufReader or BufWriter.

Errors
  • Error in case of reader or writer IO errors.
Examples
use lzfse_rust::LzfseRingEncoder;
use std::io;

fn main() -> io::Result<()> {
    let mut enc = Vec::default();
    let mut encoder = LzfseRingEncoder::default();
    let n_bytes = encoder.encode_bytes(b"test", &mut enc)?;
    // "test" string encoded.
    assert_eq!(enc, &[0x62, 0x76, 0x78, 0x2d, 0x04, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74,
                      0x62, 0x76, 0x78, 0x24]);
    Ok(())
}
source

pub fn encode_bytes(&mut self, src: &[u8], dst: &mut Vec<u8>) -> Result<u64>

This method bypasses the internal ring buffers and operates over the supplied buffers, it is functionally identical to LzfseEncoder::encode_bytes.

source

pub fn writer<O: Write>(&mut self, inner: O) -> LzfseWriter<'_, O>

Create a new LzfseWriter encoder instance using the supplied inner writer.

It is imperative that the writer is finalized after use to complete the encoding process, flushing is not sufficient.

source

pub fn writer_bytes(&mut self, vec: Vec<u8>) -> LzfseWriterBytes<'_>

Create a new LzfseWriterBytes decoder instance using the supplied vec.

This method offers greater efficiency in comparison to LzfseRingEncoder::writer when operating over byte vectors.

It is imperative that the writer is finalized after use to complete the encoding process, flushing is not sufficient.

Trait Implementations§

source§

impl Debug for LzfseRingEncoder

source§

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

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

impl Default for LzfseRingEncoder

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.