#adler32 #checksum #zlib #hash #integrity

无std adler2

Adler-32校验和的简单纯净室实现

1个稳定版本

2.0.0 2024年8月4日

算法 中排名第339

Download history 212/week @ 2024-08-02 345/week @ 2024-08-09 242628/week @ 2024-08-16

每月下载量 247,197
10,155 个crate中使用(通过 miniz_oxide

0BSD OR MIT OR Apache-2.0

20KB
218

Rust的Adler-32校验和

这是adler crate的分支,因为原始版本已被存档且不再由其作者更新

crates.io docs.rs CI

此crate提供了一个简单的Adler-32校验和实现,用于zlib压缩格式。

请参考变更日志,以查看最近版本中的更改。

特性

  • 许可宽松(0BSD)的纯净室实现。
  • 无依赖。
  • unsafe
  • 良好的性能(3-4 GB/s)(见备注)。
  • 支持#![no_std](使用default-features = false)。

用法

在您的Cargo.toml中添加条目

[dependencies]
adler2 = "2.0.0"

请参阅API文档了解如何使用crate的功能。

Rust版本支持

目前,此crate支持所有从Rust 1.56.0开始的Rust版本。

提高最低支持的Rust版本(MSRV)不会被视作破坏性变更,但如果没有充分的理由,将不会进行此操作。无论何种情况,都将始终支持最新的3个稳定Rust版本。

性能

由于算法的工作方式以及当前在安全的 Rust 中无法使用显式 SIMD 的限制,这个 crate 极大地受益于使用启用较新 CPU 指令进行编译(例如使用 RUSTFLAGS=-C target-feature'+sse4.1-C target-cpu=x86-64-v2/-C target-cpu=x86-64-v3 参数,具体取决于目标 CPU 的支持。)根据 crate 的基准测试,在 Ryzen 5600 上,启用 SSE 4.1(在 x86-64-v2 特性级别中启用)可以提供约 50-150% 的速度提升,启用 LZCNT 指令(在 x86-64-v3 特性级别中启用)可以进一步提供约 50% 的速度提升。

依赖项

~205KB