pub struct Decompressor<'a> { /* private fields */ }Expand description
Decompressor uses a symbol table to take a stream of 8-bit codes into a string.
Implementations§
Source§impl<'a> Decompressor<'a>
impl<'a> Decompressor<'a>
Sourcepub fn new(symbols: &'a [Symbol], lengths: &'a [u8]) -> Self
pub fn new(symbols: &'a [Symbol], lengths: &'a [u8]) -> Self
Returns a new decompressor that uses the provided symbol table.
§Panics
If the provided symbol table has length greater than 256
Sourcepub fn max_decompression_capacity(&self, compressed: &[u8]) -> usize
pub fn max_decompression_capacity(&self, compressed: &[u8]) -> usize
Returns an upper bound on the size of the decompressed data.
Sourcepub fn decompress_into(
&self,
compressed: &[u8],
decoded: &mut [MaybeUninit<u8>],
) -> usize
pub fn decompress_into( &self, compressed: &[u8], decoded: &mut [MaybeUninit<u8>], ) -> usize
Decompress a slice of codes into a provided buffer.
The provided decoded buffer must be at least the size of the decoded data, plus
an additional 7 bytes.
§Panics
If the caller fails to provide sufficient capacity in the decoded buffer. An upper bound
on the required capacity can be obtained by calling Self::max_decompression_capacity.
§Example
use fsst::{Symbol, Compressor, CompressorBuilder};
let compressor = {
let mut builder = CompressorBuilder::new();
builder.insert(Symbol::from_slice(&[b'h', b'e', b'l', b'l', b'o', b'o', b'o', b'o']), 8);
builder.build()
};
let decompressor = compressor.decompressor();
let mut decompressed = Vec::with_capacity(8 + 7);
let len = decompressor.decompress_into(&[0], decompressed.spare_capacity_mut());
assert_eq!(len, 8);
unsafe { decompressed.set_len(len) };
assert_eq!(&decompressed, "helloooo".as_bytes());Trait Implementations§
Source§impl<'a> Clone for Decompressor<'a>
impl<'a> Clone for Decompressor<'a>
Source§fn clone(&self) -> Decompressor<'a>
fn clone(&self) -> Decompressor<'a>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl<'a> Freeze for Decompressor<'a>
impl<'a> RefUnwindSafe for Decompressor<'a>
impl<'a> Send for Decompressor<'a>
impl<'a> Sync for Decompressor<'a>
impl<'a> Unpin for Decompressor<'a>
impl<'a> UnwindSafe for Decompressor<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more