#crc #crc32 #checksum #const #compile-time #build-time

const-crc32

A const fn implementation of crc32 checksum algorithm

6 releases (stable)

1.3.0 Sep 6, 2023
1.3.0-rc.1 Jun 23, 2023
1.2.0 Nov 2, 2022
1.1.0 Oct 5, 2022
1.0.1 Oct 5, 2022

#2590 in Algorithms

Download history 1361/week @ 2024-07-20 1386/week @ 2024-07-27 1316/week @ 2024-08-03 1756/week @ 2024-08-10 1390/week @ 2024-08-17 996/week @ 2024-08-24 755/week @ 2024-08-31 954/week @ 2024-09-07 643/week @ 2024-09-14 841/week @ 2024-09-21 905/week @ 2024-09-28 772/week @ 2024-10-05 768/week @ 2024-10-12 597/week @ 2024-10-19 777/week @ 2024-10-26 952/week @ 2024-11-02

3,214 downloads per month

MIT license

8KB
99 lines

const-crc32

A const fn crc32 checksum implementation.

Examples

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

Usage

This is a naive implementation that should be expected to have poor performance if used on dynamic data at runtime. Usage should generally be restricted to declaring const variables based on static or const data available at build time.

#[const_eval_limit]

You may need to increase the crate-wide const_eval_limit setting to use const_crc32 for larger byte slices.

Increating const_eval_limit requires the nightly-only #![feature(const_eval_limit)].

Previously, this crate set the limit itself, however, as of the 2022-10-30 nightly, the value set in const_crc32 does not increase the limit for crates which use the library.

Compile time for const data around 100k is less than 1s.


lib.rs:

A const fn crc32 checksum implementation.

Examples

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

No runtime deps