summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-storage/internal/errors.go
blob: 6b10a8c90b36130970389332424ff0adfbca2322 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package internal

func ErrWithKey(err error, key string) error {
	return &errorWithKey{key: key, err: err}
}

type errorWithKey struct {
	key string
	err error
}

func (err *errorWithKey) Error() string {
	return err.err.Error() + ": " + err.key
}

func (err *errorWithKey) Unwrap() error {
	return err.err
}

func ErrWithMsg(err error, msg string) error {
	return &errorWithMsg{msg: msg, err: err}
}

type errorWithMsg struct {
	msg string
	err error
}

func (err *errorWithMsg) Error() string {
	return err.msg + ": " + err.err.Error()
}

func (err *errorWithMsg) Unwrap() error {
	return err.err
}

func WrapErr(inner, outer error) error {
	return &wrappedError{inner: inner, outer: outer}
}

type wrappedError struct {
	inner error
	outer error
}

func (err *wrappedError) Is(other error) bool {
	return err.inner == other || err.outer == other
}

func (err *wrappedError) Error() string {
	return err.inner.Error() + ": " + err.outer.Error()
}

func (err *wrappedError) Unwrap() []error {
	return []error{err.inner, err.outer}
}