To support more complex validation I would like the ability to use a closure (probably `Fn`) as a matcher.