The main underlying trait for Haystack types, HaystackIter should be implemented on new
types that understand slicing and iterating over a haystack that can be sliced into instances of
Self::Slice.
A trait that is responsible for converting a slice into a stateful Haystack, of type H.
The primary intent of this trait is to allow users to avoid creating their own Haystack,
instead passing a slice to methods on Regex.
A trait representing an owned, mutable type that can be converted into a Haystack as
required. This allows for Regex methods that replace matches or captures
from the original Haystack.