dip/vendor/github.com/markbates/errx/errx.go

50 lines
622 B
Go
Raw Normal View History

2020-05-24 18:42:01 +02:00
package errx
import "fmt"
// go2 errors
type Wrapper interface {
Unwrap() error
}
// pkg/errors
type Causer interface {
Cause() error
}
func Unwrap(err error) error {
switch e := err.(type) {
case Wrapper:
return e.Unwrap()
case Causer:
return e.Cause()
}
return err
}
var Cause = Unwrap
func Wrap(err error, msg string) error {
return wrapped{
err: err,
msg: msg,
}
}
type wrapped struct {
err error
msg string
}
func (w wrapped) Error() string {
return fmt.Sprintf("%s: %s", w.msg, w.err)
}
func (w wrapped) Unwrap() error {
return w.err
}
func (w wrapped) Cause() error {
return w.err
}