> **v0 - Unaudited**
> This is an initial version of this package that has not yet been formally audited.
> A fully audited version will be published as a subsequent release.
> Use in production at your own risk.
# `combinederr` - Aggregate multiple errors
Collect several errors into a single `error` value with a semicolon-separated message. Useful for batch operations where you want to report every failure instead of bailing on the first.
## Usage
```go
import "gno.land/p/nt/combinederr/v0"
ce := &combinederr.CombinedError{}
ce.Add(validateName(name)) // nil is silently skipped
ce.Add(validateEmail(email))
ce.Add(validateAge(age))
if ce.Size() > 0 {
return ce // "invalid name; bad email; age must be > 0"
}
return nil
```
## API
```go
// CombinedError aggregates multiple errors into a single error value.
type CombinedError struct { /* ... */ }
// Add appends err to the combined error. Nil errors are ignored.
func (e *CombinedError) Add(err error)
// Error returns all collected errors joined with "; ".
func (e *CombinedError) Error() string
// Size returns the number of collected errors.
func (e *CombinedError) Size() int
```
## Notes
- A zero-value `CombinedError{}` with no errors added has `Size() == 0` and `Error() == ""`.
- The pointer receiver on `Add` means you must use `&CombinedError{}`.
- Aggregation is message-only: there is no `Unwrap`, so `errors.Is`/`errors.As` never see the collected errors. Use it when you want one human-readable combined string, not typed error matching.
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.