/// `BufferedPatternLocator` represents types that can perform pattern searches within a buffered sequence.
///
/// This trait serves two main purposes:
/// - It provides pattern locations for algorithms.
/// - It can help the algorithm can be defined without knowing the exact type of the `Reference` struct.
/// `PatternLocation` holds the index of a pattern within a target.
///
/// The positions within `PatternLocation` should be sorted in ascending order. In general,
/// these positions are automatically sorted when searching for an index within a target.
/// **Note that the algorithm does not perform reordering**.
///
/// Each position's value is restricted to the bounds of a `u32`, limiting the range of each position.