pub struct CompressionParameters { /* private fields */ }Expand description
Fully-resolved fine-grained compression parameters. Build through
CompressionParameters::builder; pass to
FrameCompressor::set_parameters
or compress_with_parameters.
Wraps a base CompressionLevel plus the set of knobs that override it. A parameter set that
overrides nothing is equivalent to compressing at its base level.
Implementations§
Source§impl CompressionParameters
impl CompressionParameters
Sourcepub fn builder(level: CompressionLevel) -> CompressionParametersBuilder
pub fn builder(level: CompressionLevel) -> CompressionParametersBuilder
Start a builder from a base compression level. Knobs left unset inherit that level’s resolved defaults.
Sourcepub fn level(&self) -> CompressionLevel
pub fn level(&self) -> CompressionLevel
The base compression level these parameters override.
Sourcepub fn long_distance_matching_enabled(&self) -> bool
pub fn long_distance_matching_enabled(&self) -> bool
Whether long-distance matching is enabled.
Sourcepub fn literal_compression_mode(&self) -> LiteralCompressionMode
pub fn literal_compression_mode(&self) -> LiteralCompressionMode
How literals are entropy-coded (see LiteralCompressionMode).
Sourcepub fn window_log_for(
&self,
source_size: Option<u64>,
dictionary_size: usize,
) -> u32
pub fn window_log_for( &self, source_size: Option<u64>, dictionary_size: usize, ) -> u32
The window, log2, the encoder gives a frame of source_size bytes
(None = unknown) with dictionary_size bytes of dictionary content
under these parameters: resolved exactly as the encoder resolves it.
use structured_zstd::encoding::{CompressionLevel, CompressionParameters};
let params = CompressionParameters::builder(CompressionLevel::Level(19))
.window_log(23)
.build()
.unwrap();
assert_eq!(params.window_log_for(None, 0), 23);
assert!(params.window_log_for(Some(1000), 0) < 23);Sourcepub fn for_dictionary_frame(self, source_size: Option<u64>) -> Self
pub fn for_dictionary_frame(self, source_size: Option<u64>) -> Self
These parameters as a dictionary’s own, driving a frame of
source_size bytes (None = unknown): an explicit window is raised to
cover the source, as far as 512 KiB, as upstream raises a prepared
dictionary’s window for a frame of known size
(ZSTD_compressBegin_usingCDict_internal, zstd_compress.c:5844-5852).
A window left to the level is resolved for the source and covers it.
use structured_zstd::encoding::{CompressionLevel, CompressionParameters};
let params = CompressionParameters::builder(CompressionLevel::Level(3))
.window_log(10)
.build()
.unwrap();
let source = Some(1 << 20);
assert_eq!(params.for_dictionary_frame(source).window_log_for(source, 0), 19);
assert_eq!(params.for_dictionary_frame(None).window_log_for(None, 0), 10);