Expand description
zstd, short for Zstandard, is a fast lossless compression algorithm, targeting real-time compression scenarios at zlib-level and better compression ratios. The zstd compression library provides in-memory compression and decompression functions.
The library supports regular compression levels from 1 up to ZSTD_maxCLevel, which is
currently 22. Levels >= 20, labeled --ultra, should be used with caution, as they require
more memory. The library also offers negative compression levels, which extend the range of
speed vs. ratio preferences. The lower the level, the faster the speed (at the cost of
compression).
(De-)compression can be done in:
- a single step (described as Simple API) using
ZSTD_compressandZSTD_decompress - a single step, reusing a context (described as Explicit context) using
ZSTD_createCCtxandZSTD_createDCtxto create the context, and usingZSTD_compressCCtxandZSTD_decompressDCtxto (de-)compress - unbounded multiple steps (described as Streaming compression), using
ZSTD_createCStreamandZSTD_createDStreamto create a stream,ZSTD_initCStreamandZSTD_initDStreamto (re-)initialize the stream for (de)-compression, andZSTD_compressStream2andZSTD_decompressStreamto consume input
The compression ratio achievable on small data can be highly improved using a dictionary. Dictionary compression can be performed in:
- a single step (described as Simple dictionary API), using
ZSTD_compress_usingDictandZSTD_decompress_usingDict - a single step, reusing a dictionary (described as Bulk-processing dictionary API), using
ZSTD_createCDictandZSTD_createDDictto create a dictionary, and usingZSTD_compress_usingCDictandZSTD_decompress_usingDDictto (de-)compress using the dictionary
Advanced experimental APIs should never be used with a dynamically-linked library. They are not “stable”; their definitions or signatures may change in the future. Only static linking is allowed.
Re-exports§
pub use crate::lib::zstd::ZSTD_ParamSwitch_e;pub use crate::lib::zstd::ZSTD_ResetDirective;pub use crate::lib::zstd::ZSTD_cParameter;pub use crate::lib::zstd::ZSTD_dParameter;pub use crate::lib::zstd::ZSTD_dictAttachPref_e;pub use crate::lib::zstd::ZSTD_format_e;pub use crate::lib::zstd::ZSTD_frameProgression;pub use crate::lib::zstd::ZSTD_inBuffer;pub use crate::lib::zstd::ZSTD_outBuffer;pub use crate::lib::zstd::ZSTD_strategy;pub use crate::lib::zstd::ZSTD_BLOCKSIZELOG_MAX;pub use crate::lib::zstd::ZSTD_BLOCKSIZE_MAX;pub use crate::lib::zstd::ZSTD_BLOCKSIZE_MAX_MIN;pub use crate::lib::zstd::ZSTD_CLEVEL_DEFAULT;pub use crate::lib::zstd::ZSTD_CONTENTSIZE_ERROR;pub use crate::lib::zstd::ZSTD_CONTENTSIZE_UNKNOWN;pub use crate::lib::zstd::ZSTD_FRAMEHEADERSIZE_MAX;pub use crate::lib::zstd::ZSTD_MAGICNUMBER;pub use crate::lib::zstd::ZSTD_MAGIC_DICTIONARY;pub use crate::lib::zstd::ZSTD_MAGIC_SKIPPABLE_MASK;pub use crate::lib::zstd::ZSTD_MAGIC_SKIPPABLE_START;pub use crate::lib::zstd::ZSTD_SKIPPABLEHEADERSIZE;pub use crate::lib::zstd::ZSTD_VERSION_MAJOR;pub use crate::lib::zstd::ZSTD_VERSION_MINOR;pub use crate::lib::zstd::ZSTD_VERSION_NUMBER;pub use crate::lib::zstd::ZSTD_VERSION_RELEASE;pub use crate::lib::zstd::ZSTD_WINDOWLOG_LIMIT_DEFAULT;pub use crate::lib::zstd::ZSTD_WINDOWLOG_MAX_32;pub use crate::lib::zstd::ZSTD_WINDOWLOG_MAX_64;pub use crate::lib::decompress::zstd_ddict::ZSTD_DDict;pub use crate::lib::decompress::zstd_ddict::ZSTD_createDDict;pub use crate::lib::decompress::zstd_ddict::ZSTD_createDDict_byReference;pub use crate::lib::decompress::zstd_ddict::ZSTD_estimateDDictSize;pub use crate::lib::decompress::zstd_ddict::ZSTD_freeDDict;pub use crate::lib::decompress::zstd_ddict::ZSTD_getDictID_fromDDict;pub use crate::lib::decompress::zstd_ddict::ZSTD_sizeof_DDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_DCtx_getParameter;pub use crate::lib::decompress::zstd_decompress::ZSTD_DCtx_loadDictionary;pub use crate::lib::decompress::zstd_decompress::ZSTD_DCtx_refDDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_DCtx_refPrefix;pub use crate::lib::decompress::zstd_decompress::ZSTD_DCtx_reset;pub use crate::lib::decompress::zstd_decompress::ZSTD_DCtx_setParameter;pub use crate::lib::decompress::zstd_decompress::ZSTD_DStream;pub use crate::lib::decompress::zstd_decompress::ZSTD_DStreamInSize;pub use crate::lib::decompress::zstd_decompress::ZSTD_DStreamOutSize;pub use crate::lib::decompress::zstd_decompress::ZSTD_copyDCtx;pub use crate::lib::decompress::zstd_decompress::ZSTD_createDCtx;pub use crate::lib::decompress::zstd_decompress::ZSTD_createDStream;pub use crate::lib::decompress::zstd_decompress::ZSTD_dParam_getBounds;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompress;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressBegin;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressBegin_usingDDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressBegin_usingDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressBound;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressContinue;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressDCtx;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressStream;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressStream_simpleArgs;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompress_usingDDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompress_usingDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_decompressionMargin;pub use crate::lib::decompress::zstd_decompress::ZSTD_findDecompressedSize;pub use crate::lib::decompress::zstd_decompress::ZSTD_findFrameCompressedSize;pub use crate::lib::decompress::zstd_decompress::ZSTD_freeDCtx;pub use crate::lib::decompress::zstd_decompress::ZSTD_getDecompressedSize;pub use crate::lib::decompress::zstd_decompress::ZSTD_getDictID_fromDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_getDictID_fromFrame;pub use crate::lib::decompress::zstd_decompress::ZSTD_getFrameContentSize;pub use crate::lib::decompress::zstd_decompress::ZSTD_initDStream;pub use crate::lib::decompress::zstd_decompress::ZSTD_initDStream_usingDDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_initDStream_usingDict;pub use crate::lib::decompress::zstd_decompress::ZSTD_insertBlock;pub use crate::lib::decompress::zstd_decompress::ZSTD_isFrame;pub use crate::lib::decompress::zstd_decompress::ZSTD_isSkippableFrame;pub use crate::lib::decompress::zstd_decompress::ZSTD_nextSrcSizeToDecompress;pub use crate::lib::decompress::zstd_decompress::ZSTD_sizeof_DCtx;pub use crate::lib::decompress::zstd_decompress_block::ZSTD_decompressBlock;pub use crate::lib::decompress::ZSTD_DCtx;pub use crate::lib::common::zstd_common::ZSTD_getErrorName;pub use crate::lib::common::zstd_common::ZSTD_isError;pub use crate::lib::common::zstd_common::ZSTD_versionNumber;pub use crate::lib::common::zstd_common::ZSTD_versionString;pub use crate::lib::zdict::experimental::ZDICT_cover_params_t;pub use crate::lib::zdict::experimental::ZDICT_fastCover_params_t;pub use crate::lib::zdict::experimental::ZDICT_legacy_params_t;pub use crate::lib::zdict::ZDICT_getDictID;pub use crate::lib::zdict::ZDICT_getErrorName;pub use crate::lib::zdict::ZDICT_isError;pub use crate::lib::zdict::ZDICT_params_t;pub use crate::lib::zdict::ZDICT_trainFromBuffer;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_getParameter;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_loadDictionary;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_refCDict;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_refPrefix;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_reset;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_setParameter;pub use crate::lib::compress::zstd_compress::ZSTD_CCtx_setPledgedSrcSize;pub use crate::lib::compress::zstd_compress::ZSTD_CDict;pub use crate::lib::compress::zstd_compress::ZSTD_CStreamInSize;pub use crate::lib::compress::zstd_compress::ZSTD_CStreamOutSize;pub use crate::lib::compress::zstd_compress::ZSTD_EndDirective;pub use crate::lib::compress::zstd_compress::ZSTD_cParam_getBounds;pub use crate::lib::compress::zstd_compress::ZSTD_compress;pub use crate::lib::compress::zstd_compress::ZSTD_compress2;pub use crate::lib::compress::zstd_compress::ZSTD_compressBlock;pub use crate::lib::compress::zstd_compress::ZSTD_compressBound;pub use crate::lib::compress::zstd_compress::ZSTD_compressCCtx;pub use crate::lib::compress::zstd_compress::ZSTD_compressStream;pub use crate::lib::compress::zstd_compress::ZSTD_compressStream2;pub use crate::lib::compress::zstd_compress::ZSTD_compress_usingCDict;pub use crate::lib::compress::zstd_compress::ZSTD_compress_usingDict;pub use crate::lib::compress::zstd_compress::ZSTD_copyCCtx;pub use crate::lib::compress::zstd_compress::ZSTD_createCCtx;pub use crate::lib::compress::zstd_compress::ZSTD_createCDict;pub use crate::lib::compress::zstd_compress::ZSTD_createCDict_byReference;pub use crate::lib::compress::zstd_compress::ZSTD_createCStream;pub use crate::lib::compress::zstd_compress::ZSTD_endStream;pub use crate::lib::compress::zstd_compress::ZSTD_flushStream;pub use crate::lib::compress::zstd_compress::ZSTD_freeCCtx;pub use crate::lib::compress::zstd_compress::ZSTD_freeCDict;pub use crate::lib::compress::zstd_compress::ZSTD_getBlockSize;pub use crate::lib::compress::zstd_compress::ZSTD_getDictID_fromCDict;pub use crate::lib::compress::zstd_compress::ZSTD_getFrameProgression;pub use crate::lib::compress::zstd_compress::ZSTD_initCStream;pub use crate::lib::compress::zstd_compress::ZSTD_initCStream_srcSize;pub use crate::lib::compress::zstd_compress::ZSTD_initCStream_usingCDict;pub use crate::lib::compress::zstd_compress::ZSTD_initCStream_usingDict;pub use crate::lib::compress::zstd_compress::ZSTD_maxCLevel;pub use crate::lib::compress::zstd_compress::ZSTD_minCLevel;pub use crate::lib::compress::zstd_compress::ZSTD_sequenceBound;pub use crate::lib::compress::zstd_compress::ZSTD_sizeof_CCtx;pub use crate::lib::compress::zstd_compress::ZSTD_sizeof_CDict;pub use crate::lib::compress::zstd_compress::ZSTD_BLOCKSPLITTER_LEVEL_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_CHAINLOG_MAX_32;pub use crate::lib::compress::zstd_compress::ZSTD_CHAINLOG_MAX_64;pub use crate::lib::compress::zstd_compress::ZSTD_CHAINLOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_HASHLOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_LDM_BUCKETSIZELOG_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_LDM_BUCKETSIZELOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_LDM_HASHLOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_LDM_HASHRATELOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_LDM_MINMATCH_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_LDM_MINMATCH_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_MINMATCH_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_MINMATCH_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_OVERLAPLOG_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_OVERLAPLOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_SEARCHLOG_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_SRCSIZEHINT_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_TARGETCBLOCKSIZE_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_TARGETCBLOCKSIZE_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_TARGETLENGTH_MAX;pub use crate::lib::compress::zstd_compress::ZSTD_TARGETLENGTH_MIN;pub use crate::lib::compress::zstd_compress::ZSTD_WINDOWLOG_MIN;
Modules§
Functions§
- ZDICT_
optimize ⚠Train From Buffer_ cover - This function tries many parameter combinations (specifically,
kanddcombinations) and picks the best parameters. - ZDICT_
optimize ⚠Train From Buffer_ fast Cover - This function tries many parameter combinations (specifically,
kanddcombinations) and picks the best parameters. - ZDICT_
train ⚠From Buffer_ cover - Train a dictionary from an array of samples using the COVER algorithm.
- ZDICT_
train ⚠From Buffer_ fast Cover - Train a dictionary from an array of samples using a modified version of COVER algorithm.
- ZDICT_
train ⚠From Buffer_ legacy - Train a dictionary from an array of samples.