Issue
async-compression offers no way to call set_pledged_src_size() on the zstd encoder. Could we provide a public API in async-compression to call this?
Context
zstd encoding can include an optional Frame_Content_Size value. Decompression libraries such as Python's zstandard provide APIs (e.g. decompress) that use this value to decompress the data in a single operation. Without it, these libraries must treat the encoded bytes as a stream.
Writing Frame_Content_Size requires two steps (from the zstd manual):
- Enable
ZSTD_c_contentSizeFlag. async-compression already offers a CParameter method to do this.
- Call
ZSTD_CCtx_setPledgedSrcSize() to set the decompressed data size. The zstd crate already exposes the public method set_pledged_src_size() for this, but it's not exposed by the async-compression crate.
When set_pledged_src_size is not called, the encoded bytes won't have a Frame_Content_Size value.
Issue
async-compressionoffers no way to callset_pledged_src_size()on thezstdencoder. Could we provide a public API inasync-compressionto call this?Context
zstdencoding can include an optionalFrame_Content_Sizevalue. Decompression libraries such as Python'szstandardprovide APIs (e.g.decompress) that use this value to decompress the data in a single operation. Without it, these libraries must treat the encoded bytes as a stream.Writing
Frame_Content_Sizerequires two steps (from thezstdmanual):ZSTD_c_contentSizeFlag.async-compressionalready offers aCParametermethod to do this.ZSTD_CCtx_setPledgedSrcSize()to set the decompressed data size. Thezstdcrate already exposes the public methodset_pledged_src_size()for this, but it's not exposed by theasync-compressioncrate.When
set_pledged_src_sizeis not called, the encoded bytes won't have aFrame_Content_Sizevalue.