refactored ResultOf and ResultOfValue
This commit is contained in:
parent
9bc35d2089
commit
21430b0d65
15
result.go
15
result.go
@ -5,7 +5,15 @@ type Result[T any] struct {
|
|||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func ResultOf[T any](value T, err error) Result[T] {
|
func ResultOf[T any](value *T, err error) Result[T] {
|
||||||
|
if err != nil {
|
||||||
|
return Result[T]{value: nil, err: err}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result[T]{value: value, err: nil}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ResultOfValue[T any](value T, err error) Result[T] {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Result[T]{value: nil, err: err}
|
return Result[T]{value: nil, err: err}
|
||||||
}
|
}
|
||||||
@ -14,16 +22,15 @@ func ResultOf[T any](value T, err error) Result[T] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func WrapResultOutputFunc[I, O any](f func(I) (O, error)) func(I) Result[O] {
|
func WrapResultOutputFunc[I, O any](f func(I) (O, error)) func(I) Result[O] {
|
||||||
return func(i I) Result[O] { return ResultOf(f(i)) }
|
return func(i I) Result[O] { return ResultOfValue(f(i)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
func WrapResultFunc[I, O any](f func(I) (O, error)) func(Result[I]) Result[O] {
|
func WrapResultFunc[I, O any](f func(I) (O, error)) func(Result[I]) Result[O] {
|
||||||
resFunc := WrapResultOutputFunc(f)
|
resFunc := WrapResultOutputFunc(f)
|
||||||
nilValue := *new(O)
|
|
||||||
return func(r Result[I]) Result[O] {
|
return func(r Result[I]) Result[O] {
|
||||||
v, err := r.Get()
|
v, err := r.Get()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ResultOf(nilValue, err)
|
return ResultOf[O](nil, err)
|
||||||
}
|
}
|
||||||
return resFunc(v)
|
return resFunc(v)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user