Skip to content

Add errors.AsType helper (Go 1.26+) #156

@Kupstas

Description

@Kupstas

Motivation

Go 1.26 introduces errors.AsType, a generic helper that makes typed error extraction more concise and safer than the classic errors.As(err, &target) pattern without reflect.

cockroachdb/errors is widely used as a drop-in replacement for the standard library errors for wrapping, stack traces, and utilities. Adding an AsType-style API (or mirroring stdlib when building with Go 1.26+) would:

  • reduce boilerplate (var t *T; if errors.As(err, &t) { ... })
  • improve readability and reduce misuse
  • align the package with modern Go idioms (generic helpers)
  • help projects keep a single “errors surface” without mixing stdlib + cockroachdb/errors

Request

Add errors.AsType to this package with semantics matching Go 1.26 errors.AsType.

  • On Go 1.26+: delegate to stdlib errors.AsType.
  • Use go:build constraints to keep compatibility clean.
//go:build go1.26

package errors

import (
    sterrors "errors"
)

// AsType delegates to the standard library implementation on Go 1.26+.
func AsType[T any](err error) (T, bool) {
    return sterrors.AsType[T](err)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions