Files
go-utils/result.go

41 lines
594 B
Go

package util
type Result[T any] struct {
value *T
err error
}
func ResultOk[T any](value T) Result[T] {
return Result[T]{value: &value, err: nil}
}
func ResultErr[T any](err error) Result[T] {
return Result[T]{value: nil, err: err}
}
func (res Result[T]) IsOk() bool {
return res.err == nil
}
func (res Result[T]) IsErr() bool {
return !res.IsOk()
}
func (res Result[T]) Value() T {
if !res.IsOk() {
panic("Yank on Err Result")
}
return *res.value
}
func (res Result[T]) Error() error {
if !res.IsErr() {
panic("Yank on OK Result")
}
return res.err
}