I do know that the placement of the lifetime parameter is imprtsmt. Gotta define a function with lifetimes and be specified before the parameters . its something to do with the complier has to know how lifetimes relate to each other when function sigs are checked.
< 'a > after 'matches' will confuse the complier to associate the lifetime with the parameters.