Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Result ¶
result_ of an operation.
Designed to replace the return pattern of (value, error). result_ is either a value or an error. Ideally, the internal err would be a non-interface type, but kept as error for backwards compatibility. The internal err is designed to be a singular error and not a linked list of errors. This removes a ton of complexity and uncertainty in the error chain and error usage/lifecycle.
Example ¶
package main
import (
"fmt"
"github.com/wspowell/errors"
"github.com/wspowell/errors/result"
)
type Result[T any, E result.Optional] struct {
result.Result[T, E]
}
func Ok[T any, E result.Optional](value T) Result[T, E] {
return Result[T, E]{result.Ok[T, E](value)}
}
func Err[T any, E result.Optional](err E) Result[T, E] {
return Result[T, E]{result.Err[T](err)}
}
func main() {
exampleFn := func(success bool) Result[int, errors.Error[string]] {
if success {
return Ok[int, errors.Error[string]](1)
}
return Err[int](errors.Some(errErrorFailure))
}
// Success result.
fmt.Println(exampleFn(true).IsOk())
fmt.Println(exampleFn(true).Error().Into())
fmt.Println(exampleFn(true).Value())
fmt.Println(exampleFn(true).ValueOr(2))
fmt.Println(exampleFn(true).ValueOrPanic())
// Error result.
fmt.Println(exampleFn(false).IsOk())
fmt.Println(exampleFn(false).Error().Into())
fmt.Println(exampleFn(false).Value())
fmt.Println(exampleFn(false).ValueOr(2))
//fmt.Println(exampleFn(false).ValueOrPanic()) // Will panic
}
Output: true 1 1 1 false failure 0 2
func (Result[T, E]) Error ¶
func (self Result[T, E]) Error() E
Error of the result.
The Error value can never be `nil`, so it is recommended to use Result.IsOk(). Another alternative is to call Result.Error().IsNone().
func (Result[T, E]) Result ¶
func (self Result[T, E]) Result() (T, E)
Result decomposes into the basic (T, error) return value.
Useful when decomposing into variables for custom evaluation.
func (Result[T, E]) Value ¶
func (self Result[T, E]) Value() T
Value of the Ok result.
Note: If called on an error result, this will be the zero value of T.
func (Result[T, E]) ValueOr ¶
func (self Result[T, E]) ValueOr(defaultValue T) T
ValueOr default value if not an Ok result.
func (Result[T, E]) ValueOrPanic ¶
func (self Result[T, E]) ValueOrPanic() T
ValueOrPanic if not an Ok result.
It is recommended to only call this during app initialization. Otherwise, use Result.ValueOr().