Struct lzfse_rust::LzfseRingEncoder
source · 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
impl LzfseRingEncoder
sourcepub fn encode<I, O>(
&mut self,
reader: &mut I,
writer: &mut O
) -> Result<(u64, u64)>where
I: Read,
O: Write,
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
orwriter
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(())
}
sourcepub fn encode_bytes(&mut self, src: &[u8], dst: &mut Vec<u8>) -> Result<u64>
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.
sourcepub fn writer<O: Write>(&mut self, inner: O) -> LzfseWriter<'_, O> ⓘ
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.
sourcepub fn writer_bytes(&mut self, vec: Vec<u8>) -> LzfseWriterBytes<'_> ⓘ
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.