From 40e0b3172af1e8deab80a7bf2bf95337ef9201c6 Mon Sep 17 00:00:00 2001 From: Keuin Date: Sat, 1 Jul 2023 21:52:08 +0800 Subject: Refactor: replace homemade result handling with library. --- common/orelse.go | 61 -------------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 common/orelse.go (limited to 'common/orelse.go') diff --git a/common/orelse.go b/common/orelse.go deleted file mode 100644 index 29e3dc7..0000000 --- a/common/orelse.go +++ /dev/null @@ -1,61 +0,0 @@ -package common - -import "reflect" - -type Opt[T any] interface { - OrElse(thing T) T -} - -type OptError[T any] struct { - thing T - err error -} - -type OptNull[T any] struct { - ptr *T -} - -type OptZero[T any] struct { - thing T -} - -func (o OptNull[T]) OrElse(thing T) T { - if o.ptr != nil { - return *o.ptr - } - return thing -} - -func Errorable[T any](thing T, err error) Opt[T] { - return OptError[T]{ - thing: thing, - err: err, - } -} - -func (o OptError[T]) OrElse(thing T) T { - if o.err != nil { - return thing - } - return o.thing -} - -func Nullable[T any](ptr *T) Opt[T] { - return OptNull[T]{ - ptr: ptr, - } -} - -func Zeroable[T any](thing T) Opt[T] { - return OptZero[T]{ - thing: thing, - } -} - -func (o OptZero[T]) OrElse(thing T) T { - var zero T - if reflect.DeepEqual(zero, o.thing) { - return thing - } - return o.thing -} -- cgit v1.2.3