in.go 597 B

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