Testable describes types (e.g., a function) whose values can be
Anything that can be tested must be capable of producing a
given a random number generator. This is trivial for types like
which are just converted to either a passing or failing test result.
For functions, an implementation must generate random arguments and potentially shrink those arguments if they produce a failure.
It's unlikely that you'll have to implement this trait yourself.