feat: Result.New() — maps Go (value, error) to Result
Result{}.New(file, err) // OK = err == nil, Value = file
Result{}.New(value) // OK = true, Value = value
Result{}.New() // OK = false
Enables: return Result{}.New(s.fsys.Open(path))
Replaces manual if err != nil { return Result{} } blocks.
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
2d6415b3aa
commit
01dec6dbe7
1 changed files with 25 additions and 0 deletions
|
|
@ -43,6 +43,31 @@ type Result struct {
|
|||
OK bool
|
||||
}
|
||||
|
||||
// New creates a Result from variadic args.
|
||||
// Maps Go (value, error) pairs and multi-value returns to Result.
|
||||
//
|
||||
// Result{}.New(file, err) // OK = err == nil, Value = file
|
||||
// Result{}.New(value) // OK = true, Value = value
|
||||
// Result{}.New() // OK = false
|
||||
// Result{}.New("1", 1) // OK = true, Value = first arg
|
||||
func (r Result) New(args ...any) Result {
|
||||
if len(args) == 0 {
|
||||
return Result{}
|
||||
}
|
||||
|
||||
// Check if last arg is an error
|
||||
if len(args) >= 2 {
|
||||
if err, ok := args[len(args)-1].(error); ok {
|
||||
if err != nil {
|
||||
return Result{Value: err}
|
||||
}
|
||||
return Result{Value: args[0], OK: true}
|
||||
}
|
||||
}
|
||||
|
||||
return Result{Value: args[0], OK: true}
|
||||
}
|
||||
|
||||
// Option is a single key-value configuration pair.
|
||||
//
|
||||
// core.Option{K: "name", V: "brain"}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue