#crc32 #const #checksum #crc #build-time #no-std

no-std const-crc32-nostd

基于 crc32 校验和算法的 const 函数实现

1 个稳定版本

1.3.1 2024年2月26日

1613算法 中排名

Download history 3/week @ 2024-03-13 5/week @ 2024-03-27 10/week @ 2024-04-03 2/week @ 2024-05-22 18/week @ 2024-05-29 28/week @ 2024-06-12 221/week @ 2024-06-19 36/week @ 2024-06-26

每月 285 次下载

MIT 许可证

8KB
100

const-crc32

一个基于 const 的 crc32 校验和实现。

示例

const BYTES: &[u8] = "The quick brown fox jumps over the lazy dog".as_bytes();
const CKSUM: u32 = const_crc32::crc32(BYTES);
assert_eq!(CKSUM, 0x414fa339_u32);

用法

这是一个原始实现,如果在使用动态数据时性能较差,则应限制其使用。通常应将其限制为在构建时根据 staticconst 数据声明的 const 变量。

#[const_eval_limit]

您可能需要增加 crate 全局的 const_eval_limit 设置,以使用 const_crc32 处理更大的字节切片。

增加 const_eval_limit 需要夜间唯一的 #![feature(const_eval_limit)]

之前,此 crate 会自动设置限制,但自 2022-10-30 夜间版以来,const_crc32 中设置的值不会增加使用库的 crate 的限制。

关于 100k 的 const 数据的编译时间不到 1 秒。


lib.rs:

一个基于 const 的 crc32 校验和实现。

示例

use const_crc32_nostd as const_crc32;
const BYTES: &[u8] = "The quick brown fox jumps over the lazy dog".as_bytes();
const CKSUM: u32 = const_crc32::crc32(BYTES);
assert_eq!(CKSUM, 0x414fa339_u32);

无运行时依赖