Crate crc32c

source ·
Expand description

This crate provides the CRC-32-Castagnoli algorithm.

It provides both a software implementation, and a hardware-optimized one for SSE 4.2.


let message = b"Hello world!";

let crc = crc32c::crc32c(message);

assert_eq!(crc, 0x7B_98_E7_51);

Enabling hardware acceleration

If you compile your code with -C target-features=+sse4.2, then the hardware-optimized version will be compiled into the code.

Otherwise, the crate will use cpuid at runtime to detect the running CPU’s features, and enable the appropiate algorithm.



  • Computes the CRC for the data payload.
  • Computes the CRC for the data payload, starting with a previous CRC value.
  • Computes the “combined” value of two CRC32c values. Specifically, given two byte streams A and B and their CRC32c check values crc32c(A) and crc32c(B), this function calculates crc32c(AB) using only crc32c(A), crc32c(B), and the length of B.