Trait Matcher

Source
pub trait Matcher {
    // Required methods
    fn get_next_space(&mut self) -> Vec<u8> ;
    fn get_last_space(&mut self) -> &[u8] ;
    fn commit_space(&mut self, space: Vec<u8>);
    fn skip_matching(&mut self);
    fn start_matching(
        &mut self,
        handle_sequence: impl for<'a> FnMut(Sequence<'a>),
    );
    fn reset(&mut self, level: CompressionLevel);
    fn window_size(&self) -> u64;
}
Expand description

Trait used by the encoder that users can use to extend the matching facilities with their own algorithm making their own tradeoffs between runtime, memory usage and compression ratio

This trait operates on buffers that represent the chunks of data the matching algorithm wants to work on. One or more of these buffers represent the window the decoder will need to decode the data again.

This library asks the Matcher for a new buffer using get_next_space to allow reusing of allocated buffers when they are no longer part of the window of data that is being used for matching.

The library fills the buffer with data that is to be compressed and commits them back to the matcher using commit_space.

Then it will either call start_matching or, if the space is deemed not worth compressing, skip_matching is called.

This is repeated until no more data is left to be compressed.

Required Methods§

Source

fn get_next_space(&mut self) -> Vec<u8>

Get a space where we can put data to be matched on. Will be encoded as one block. The maximum allowed size is 128 kB.

Source

fn get_last_space(&mut self) -> &[u8]

Get a reference to the last commited space

Source

fn commit_space(&mut self, space: Vec<u8>)

Commit a space to the matcher so it can be matched against

Source

fn skip_matching(&mut self)

Just process the data in the last commited space for future matching

Source

fn start_matching(&mut self, handle_sequence: impl for<'a> FnMut(Sequence<'a>))

Process the data in the last commited space for future matching AND generate matches for the data

Source

fn reset(&mut self, level: CompressionLevel)

Reset this matcher so it can be used for the next new frame

Source

fn window_size(&self) -> u64

The size of the window the decoder will need to execute all sequences produced by this matcher

May change after a call to reset with a different compression level

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.

Implementors§