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);