summaryrefslogtreecommitdiff
path: root/common/orelse.go
diff options
context:
space:
mode:
Diffstat (limited to 'common/orelse.go')
-rw-r--r--common/orelse.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/common/orelse.go b/common/orelse.go
new file mode 100644
index 0000000..a96bde7
--- /dev/null
+++ b/common/orelse.go
@@ -0,0 +1,20 @@
+package common
+
+type Opt[T any] struct {
+ thing T
+ err error
+}
+
+func Optional[T any](thing T, err error) Opt[T] {
+ return Opt[T]{
+ thing: thing,
+ err: err,
+ }
+}
+
+func (o Opt[T]) OrElse(thing T) T {
+ if o.err != nil {
+ return thing
+ }
+ return o.thing
+}