Files
validate/required.go
T
aneurinandClaude Sonnet 5 fb47461d5d add Required, Prefix, Suffix, Contains, Match validators
Broadens the built-in set with the string/presence checks that came up
most often when reaching for this package:

  - Required[T comparable]  non-zero value
  - Prefix / Suffix / Contains  strings.HasPrefix/HasSuffix/Contains
  - Match(*regexp.Regexp)  arbitrary pattern

All follow the existing shape: a constructor returning func(T) error, a
sentinel error matched with errors.Is, table-driven tests and an Example.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 13:21:56 +01:00

22 lines
479 B
Go

package validate
var (
ErrRequired = NewError("is required")
)
// Required validates that a value is not the zero value for its type: an
// empty string, 0, a nil pointer, and so on.
//
// It is defined for comparable types only. For slices and maps, use
// MinSize(1); for "non-whitespace", combine with a trimming step.
func Required[T comparable]() func(T) error {
var zero T
return func(value T) error {
if value == zero {
return ErrRequired
}
return nil
}
}