Disclosure: I'm the author of the memchr
crate.
You mention the memchr
crate, but you don't seem to have benchmarked it. Instead, you benchmarked the needle
crate (last updated 7 years ago). Can you explain a bit more about your methodology?
The memchr
crate in particular doesn't just use Rabin-Karp. It also uses Two-Way. And SIMD (with support for x86-64, aarch64 and wasm32).