Processes a rule across a vector of tokens. Starting from the first token,
iteratively applies the rule on a single token. If that application returns
None, continues applying the rule on the token and the next, then the next,
and so on until the function returns Some or there are no tokens left to
process. This process is explained more thoroughly with examples in the
readme.