A SIMD implementation of the [Fletcher's checksum] algorithm.
Note: This implementation uses a modulus of 2^k
where k
is the checksum block size in bits, as this is fast with wrapping math. Other implementations may use 2^k - 1
.
std::simd
, which currently requires nightly.std::simd
.multiversion
] crate.```rust use byteorder::{ByteOrder, LittleEndian}; use fletcher_simd::Fletcher128;
fn main() { const DATA: &str = "abcdefgh"; let mut fletcher = Fletcher128::new();
// Read bytes in little endian. Endianness matters!
fletcher.update_with_iter(
DATA.as_bytes()
.chunks(8)
.map(|chunk| LittleEndian::read_u64(chunk)),
);
assert_eq!(fletcher.value(), 0x68676665646362616867666564636261);
} ```