@@ -2,23 +2,25 @@ package result
22
33import "fmt"
44
5- // Result represents failure or success. The Ok variant represents success and
6- // contains a value. The Err variant represent a failure and contains an error.
5+ // Result represents failure or success. The [Ok] variant represents success
6+ // and contains a value. The [Err] variant represent a failure and contains an
7+ // error.
78type Result [T any ] struct {
89 value T
910 err error
1011}
1112
12- // Ok instanriates a successful result with a value.
13+ // Ok instantiates a [Result] with a value.
1314func Ok [T any ](value T ) Result [T ] {
1415 return Result [T ]{value , nil }
1516}
1617
17- // Err instanitates a failed result with an error.
18+ // Err instantiates a [Result] with an error.
1819func Err [T any ](err error ) Result [T ] {
1920 return Result [T ]{err : err }
2021}
2122
23+ // String implements the [fmt.Stringer] interface.
2224func (r Result [T ]) String () string {
2325 if r .err == nil {
2426 return fmt .Sprintf ("Ok(%v)" , r .value )
@@ -27,8 +29,10 @@ func (r Result[T]) String() string {
2729 return fmt .Sprintf ("Err(%s)" , r .err .Error ())
2830}
2931
30- // Unwrap returns the underlying value of an Ok variant, or panics if called
31- // on an Err variant.
32+ var _ fmt.Stringer = Result [struct {}]{}
33+
34+ // Unwrap returns the underlying value of an [Ok] variant, or panics if called
35+ // on an [Err] variant.
3236func (r Result [T ]) Unwrap () T {
3337 if r .err == nil {
3438 return r .value
@@ -37,8 +41,8 @@ func (r Result[T]) Unwrap() T {
3741 panic ("called `Result.Unwrap()` on an `Err` value" )
3842}
3943
40- // UnwrapOr returns the underlying value of an Ok variant, or the provided
41- // value on an Err variant.
44+ // UnwrapOr returns the underlying value of an [Ok] variant, or the provided
45+ // value on an [ Err] variant.
4246func (r Result [T ]) UnwrapOr (value T ) T {
4347 if r .err == nil {
4448 return r .value
@@ -47,8 +51,8 @@ func (r Result[T]) UnwrapOr(value T) T {
4751 return value
4852}
4953
50- // UnwrapOrElse returns the underlying value of an Ok variant, or the result
51- // of calling the provided function on an Err variant.
54+ // UnwrapOrElse returns the underlying value of an [Ok] variant, or the result
55+ // of calling the provided function on an [ Err] variant.
5256func (r Result [T ]) UnwrapOrElse (f func () T ) T {
5357 if r .err == nil {
5458 return r .value
@@ -57,8 +61,8 @@ func (r Result[T]) UnwrapOrElse(f func() T) T {
5761 return f ()
5862}
5963
60- // UnwrapOrZero returns the underlying value of an Ok variant, or the zero
61- // value of an Err variant.
64+ // UnwrapOrZero returns the underlying value of an [Ok] variant, or the zero
65+ // value of an [ Err] variant.
6266func (r Result [T ]) UnwrapOrZero () T {
6367 if r .err == nil {
6468 return r .value
@@ -68,24 +72,24 @@ func (r Result[T]) UnwrapOrZero() T {
6872 return value
6973}
7074
71- // IsOk returns true if the Result is an Ok variant.
75+ // IsOk returns true if the [ Result] is an [Ok] variant.
7276func (r Result [T ]) IsOk () bool {
7377 return r .err == nil
7478}
7579
76- // IsErr returns true if the Result is an Err variant.
80+ // IsErr returns true if the [ Result] is an [ Err] variant.
7781func (r Result [T ]) IsErr () bool {
7882 return r .err != nil
7983}
8084
81- // Value returns the underlying value and nil for an Ok variant, or the zero
82- // value and an error for an Error variant.
85+ // Value returns the underlying value and nil for an [Ok] variant, or the zero
86+ // value and an error for an [Err] variant.
8387func (r Result [T ]) Value () (T , error ) {
8488 return r .value , r .err
8589}
8690
87- // Unwrap returns the underlying error of an Err variant, or panics if called
88- // on an Ok variant.
91+ // UnwrapErr returns the underlying error of an [ Err] variant, or panics if called
92+ // on an [Ok] variant.
8993func (r Result [T ]) UnwrapErr () error {
9094 if r .IsOk () {
9195 panic ("called `Result.UnwrapErr()` on an `Ok` value" )
0 commit comments