Skip to main content

CompressionOracle

Trait CompressionOracle 

Source
pub trait CompressionOracle: Send + Sync {
    // Required methods
    fn compression_distance(
        &self,
        left: &[u8],
        right: &[u8],
    ) -> Result<f64, CompressionError>;
    fn intrinsic_dependence(
        &self,
        data: &[u8],
        max_order: i64,
    ) -> Result<f64, CompressionError>;

    // Provided methods
    fn compression_distance_chain(
        &self,
        left_parts: &[&[u8]],
        right_parts: &[&[u8]],
    ) -> Result<f64, CompressionError> { ... }
    fn batch_compression_distance(
        &self,
        target: &[u8],
        candidates: &[Vec<u8>],
    ) -> Result<Vec<f64>, CompressionError> { ... }
}
Expand description

Compression capability (intentionally abstracted from router process).

Required Methods§

Source

fn compression_distance( &self, left: &[u8], right: &[u8], ) -> Result<f64, CompressionError>

CMR Section 3.2 compression distance from spec: C(XY)-C(X) + C(YX)-C(Y).

Source

fn intrinsic_dependence( &self, data: &[u8], max_order: i64, ) -> Result<f64, CompressionError>

Intrinsic dependence.

Provided Methods§

Source

fn compression_distance_chain( &self, left_parts: &[&[u8]], right_parts: &[&[u8]], ) -> Result<f64, CompressionError>

CMR Section 3.2 compression distance where each side can be provided as a sequence of chunks without building contiguous buffers.

Source

fn batch_compression_distance( &self, target: &[u8], candidates: &[Vec<u8>], ) -> Result<Vec<f64>, CompressionError>

Batch CMR distance, defaulting to repeated scalar calls.

Implementors§