pub(crate) fn forward_oneshot<F>(self, mut test: F)
    where
        F: FnMut(&[u8], &[u8]) -> Option<Option<usize>> + 'static,
    {
        self.forward_iter(move |haystack, needles| {
            let mut start = 0;
            let mut results = vec![];
            while let Some(i) = test(&haystack[start..], needles)? {
                results.push(start + i);
                start += i + 1;
            }
            Some(results)
        })
    }
Like `Runner::forward`, but for a function that returns only the next
match and not all matches.

If the function returns `None`, then it is skipped.
src/tests/memchr/mod.rs