in.go 626 B

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