Cargo Features

crc-fast has no features set by default.

[dependencies]
crc-fast = { version = "1.0.0", features = ["vpclmulqdq", "optimize_crc32_auto", "optimize_crc32_neon_eor3_v9s3x2e_s3", "optimize_crc32_neon_v3s4x2e_v2", "optimize_crc32_neon_blended", "optimize_crc32_avx512_vpclmulqdq_v3x2", "optimize_crc32_avx512_v4s3x3", "optimize_crc32_sse_v4s3x3"] }
vpclmulqdq

enable VPCLMULQDQ support in Rust for x86_64 using nightly toolchain builds

optimize_crc32_auto

enable using fast-crc32 optimized C implementations for CRC-32/ISCSI and CRC-32/ISO-HDLC, automatically detected

optimize_crc32_neon_eor3_v9s3x2e_s3

the following features enable forcing custom optimized build features (rather than "auto" which attemps to pick the best) for CRC-32/ISCSI and CRC-32/ISO-HDLC calculations, since architecture support and performance varies
aarch64 NEON options

optimize_crc32_neon_v12e_v1 optimize_crc32_neon_v3s4x2e_v2
optimize_crc32_neon_blended

blends eor3_v9s3x2e_s3 for "large" (>1KiB) payloads, and v12e_v1 for "small" ones, which tends to yield the best results on modern aarch64 such as Graviton and Apple Silicon

optimize_crc32_avx512_vpclmulqdq_v3x2

x86 SSE+ options
this will blend automagically for CRC-32/ISO-HDLC which tends to have poor hardware support, but typically great support for CRC-32/ISCSI

optimize_crc32_avx512_v4s3x3

non-blended alternatives

optimize_crc32_sse_v4s3x3