45个稳定版本
1.1.19 | 2024年8月12日 |
---|---|
1.1.18 | 2024年5月24日 |
1.1.16 | 2024年3月21日 |
1.1.12 | 2023年7月26日 |
0.1.0 | 2014年11月27日 |
在压缩类别中排名15
每月下载3,031,738次
用于3,097个crate(直接使用92个)
1MB
16K SLoC
libz-sys
将libz库链接到Rust程序(也称为zlib)的通用库。
这也为构建libz-ng-sys
crate提供源码,该crate以原生方式构建zlib-ng(非zlib-compat模式)。有关详细信息,请参阅README-zng.md
。
高级API
此crate提供对原始的低级C API的绑定。要使用DEFLATE、zlib或gzip流的高级安全API,请参阅flate2
。 flate2
还支持替代实现,包括较慢但纯Rust的实现。
zlib-ng
此crate支持在zlib-compat模式下构建高性能的zlib-ng,或广泛使用的标准zlib。
默认情况下,libz-sys
使用标准zlib,主要是因为这样做可以在有可用的情况下使用共享的系统zlib库。
任何为zlib设计的应用程序或库都应在zlib-compat模式下与zlib-ng一起工作,只要它不对压缩数据的确切大小或输出做出假设(例如,“压缩这些数据将产生这么多字节”),并且您不还动态地拉入标准zlib的副本(这将产生冲突的符号)。尽管如此,为了实现最大兼容性,构建中的每个库crate都必须选择允许zlib-ng;如果您的依赖图中任何库crate需要标准zlib,则libz-sys
将使用标准zlib。
依赖于libz-sys
的库crate应使用
libz-sys = { version = "1.1", default-features = false, features = ["libc"] }
(如果不需要相应的函数,则省略libc
特性。)
这允许依赖您的库的更高层次的crate在需要时选择使用zlib-ng。
构建zlib-ng需要cmake
,除非启用了zlib-ng-no-cmake-experimental-community-maintained
特性,在这种情况下将使用cc
。请注意,此选项启用了针对给定目标支持的所有编译器特性,这可能在较旧的编译器或没有某些头文件的目标上无法编译。
不需要与zlib C API兼容的crate,并且仅从Rust使用zlib或支持zlib-ng的本地C API(以zng_
前缀)可以使用libz-ng-sys
,这允许zlib和zlib-ng在同一程序中共存。有关详细信息,请参阅README-zng.md。
最小支持Rust版本(MSRV)策略
此crate使用与flate2
crate相同的MSRV策略:此crate支持Rust的当前和上一个稳定版本。较旧版本的Rust可能可以工作,但我们不保证它们将继续工作。
许可协议
该项目可以在以下任一协议下使用:
- Apache License,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可协议(LICENSE-MIT或https://opensource.org/license/mit/)
任选其一。
贡献
除非您明确说明,否则您提交给libz-sys
的任何有意贡献,根据Apache-2.0许可协议定义,应作为上述双重许可发布,没有任何额外的条款或条件。