in.go 645 B

1234567891011121314151617181920212223242526272829303132
  1. package validate
  2. import "errors"
  3. // Validation error.
  4. var (
  5. ErrValueNotAllowed = errors.New("not allowed")
  6. )
  7. // In validates whether a value is found in a slice of allowed values.
  8. func In[T comparable](allow ...T) func(T) error {
  9. return func(value T) error {
  10. for _, cmp := range allow {
  11. if cmp == value {
  12. return nil
  13. }
  14. }
  15. return ErrValueNotAllowed
  16. }
  17. }
  18. // NotIn validates whether a value is not found in a slice of disallowed values.
  19. func NotIn[T comparable](allow ...T) func(T) error {
  20. return func(value T) error {
  21. for _, cmp := range allow {
  22. if cmp == value {
  23. return ErrValueNotAllowed
  24. }
  25. }
  26. return nil
  27. }
  28. }