feat(compress): port the public one-shot compressor to Rust
Implement ZSTD_compress in Rust using the migrated parameter, match-finder, sequence, frame, and superblock leaves. Keep the private context and streaming entry points C-backed until their configuration-dependent context projection is ported, and remove only the duplicate C one-shot definition. Test Plan: - cargo test --manifest-path rust/Cargo.toml - cargo clippy --manifest-path rust/Cargo.toml --all-targets -- -D warnings - cargo +nightly fmt --manifest-path rust/Cargo.toml --all -- --check - make -B -C tests test-rust-lib-smoke V=1 - git diff --check Refs: rust/src/zstd_compress.rs, lib/compress/zstd_compress.c
This commit is contained in:
@@ -4776,24 +4776,7 @@ size_t ZSTD_compressCCtx(ZSTD_CCtx* cctx,
|
||||
return ZSTD_compress_usingDict(cctx, dst, dstCapacity, src, srcSize, NULL, 0, compressionLevel);
|
||||
}
|
||||
|
||||
size_t ZSTD_compress(void* dst, size_t dstCapacity,
|
||||
const void* src, size_t srcSize,
|
||||
int compressionLevel)
|
||||
{
|
||||
size_t result;
|
||||
#if ZSTD_COMPRESS_HEAPMODE
|
||||
ZSTD_CCtx* cctx = ZSTD_createCCtx();
|
||||
RETURN_ERROR_IF(!cctx, memory_allocation, "ZSTD_createCCtx failed");
|
||||
result = ZSTD_compressCCtx(cctx, dst, dstCapacity, src, srcSize, compressionLevel);
|
||||
ZSTD_freeCCtx(cctx);
|
||||
#else
|
||||
ZSTD_CCtx ctxBody;
|
||||
ZSTD_initCCtx(&ctxBody, ZSTD_defaultCMem);
|
||||
result = ZSTD_compressCCtx(&ctxBody, dst, dstCapacity, src, srcSize, compressionLevel);
|
||||
ZSTD_freeCCtxContent(&ctxBody); /* can't free ctxBody itself, as it's on stack; free only heap content */
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
/* ZSTD_compress() is implemented by rust/src/zstd_compress.rs. */
|
||||
|
||||
|
||||
/* ===== Dictionary API ===== */
|
||||
|
||||
Reference in New Issue
Block a user