fletcher-simd 0.1.0

A SIMD implementation of the Fletcher's checksum algorithm.
Documentation

fletcher-simd

crates.io crates.io docs.rs

A SIMD implementation of the Fletcher's checksum algorithm.

Features

  • Uses std::simd, which currently requires nightly.
  • Supports all architectures supported by std::simd.
  • Both run-time and compile-time detection available via the multiversion crate.
  • Scalar fallback.

Example

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