A Rust library for computing CRC (16, 32, 64) checksums with support for various standards and pluggable implementations.
crc-rs is a Rust library for computing CRC (Cyclic Redundancy Check) checksums, which are used to detect errors in data transmission or storage. It supports common CRC standards (16, 32, 64-bit) and allows custom algorithm definitions, providing a reliable way to verify data integrity in Rust applications.
Rust developers working on systems that require data integrity verification, such as network protocols, file formats, embedded systems, or storage applications.
Developers choose crc-rs for its comprehensive support of CRC standards, pluggable implementations that optimize for speed or binary size, and its idiomatic Rust API that integrates seamlessly into Rust projects.
Rust implementation of CRC(16, 32, 64) with support of various standards
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes pre-defined standards like CRC-16 IBM SDLC and allows custom parameters, as demonstrated in the examples for both well-known and custom algorithms.
Offers three pluggable implementations with benchmarks showing throughput up to 3.30 GiB/s for 32-bit CRC, enabling users to optimize for speed or binary size.
Supports full custom CRC algorithm definitions with control over polynomial, initial value, and other parameters, making it adaptable to non-standard requirements.
Maintains a transparent Minimum Supported Rust Version policy, currently set to Rust 1.83, with defined update rules for stability.
Lookup tables are generated at compile-time and can increase binary size significantly, as warned in the README, necessitating workarounds like OnceCell for size-sensitive applications.
Users must select between NoTable, Table<1>, and Table<16> implementations, each with different performance and size trade-offs, adding complexity to integration.
The library is limited to CRC algorithms and does not support other checksum or hash functions, potentially requiring additional dependencies for broader error detection needs.