fast-slice-utils 0.1.0

Highly optimized slice utilities using SIMD instructions when available
Documentation
# fast-slice-utils

Highly optimized slice utilities using SIMD instructions when available

## Overview

`fast-slice-utils` provides optimized implementations of a couple of slice operations using platform-specific SIMD instructions (AVX2, NEON, etc.).

The library is `no_std` compatible.

## Functions

- **`find_prefix_overlap`**: Returns the number of matching bytes at the start of two slices
- **`starts_with`**: A faster replacement for the standard library's [`slice::starts_with`]https://doc.rust-lang.org/std/primitive.slice.html#method.starts_with

## Platform Support

- **x86_64 with AVX2**: Uses 256-bit AVX2 instructions
- **ARM with NEON**: Uses 128-bit NEON instructions
- **Portable SIMD**: Uses portable SIMD. (requires `nightly` feature)

## Safety (miri issue)

Currently some of the implementations may over-read the provided slices, causing miri to become upset.  The code ensures that it never reads across a page boundary.  If a fix can be found (that doesn't hurt performance too badly) we will gladly integrate it.

## Contributing

Any contribution is welcome including bug fixes, optimizations, additional functions, and support for additional platforms.