1 个稳定版本
| 1.3.1 | 2024年2月26日 |
|---|
1613 在 算法 中排名
每月 285 次下载
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);
用法
这是一个原始实现,如果在使用动态数据时性能较差,则应限制其使用。通常应将其限制为在构建时根据 static 或 const 数据声明的 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);