From e35674dbaa2ebc319665446d3012ae91752aa311 Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Sat, 6 Jan 2024 15:04:52 +0800 Subject: [PATCH] feat: add TryErr --- pkg/utils/try.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/utils/try.go b/pkg/utils/try.go index 2339520..7b46d98 100644 --- a/pkg/utils/try.go +++ b/pkg/utils/try.go @@ -25,3 +25,27 @@ func (c *TryChain[T, V]) Or(callback func() (T, V)) *TryChain[T, V] { func (c *TryChain[T, V]) Done() (T, V) { return c.result, c.error } + +type TryChainErr struct { + err error +} + +func NewTryErr() *TryChainErr { + return &TryChainErr{} +} + +func (c *TryChainErr) Try(callback func() error) *TryChainErr { + c.err = callback() + return c +} + +func (c *TryChainErr) Or(callback func() error) *TryChainErr { + if c.err == nil { + return c + } + return c.Try(callback) +} + +func (c *TryChainErr) Done() error { + return c.err +}