Guard test for protocol?

Is there a guard for testing protocol implementation?
is_proto/2

For example, how to guard test for implementing Enumerable?

I understand some will say it’s not necessary, because the execution will fail at the first protocol dispatch with Protocol.UndefinedError. However, the stack trace could be deeply nested and confusing, so it might be nice to push the test up to the outer public api.

A custom protocol could define a function, say, valid!/1 that must return :ok (anything) for all implementations, but it would be a function, because protocols cannot define guards.

This cannot be done at a guard levels though - it literally tries to load modules.