`rule` can also be a callable or closure, I think we should add a few examples of those