@@ -11,16 +11,16 @@ type Result[T, E any] struct {
1111 assigned bool
1212}
1313
14- func Ok [T , E any ](v T ) Result [T , E ] {
15- return Result [T , E ]{
14+ func Ok [T , E any ](v T ) * Result [T , E ] {
15+ return & Result [T , E ]{
1616 value : v ,
1717 ok : true ,
1818 assigned : true ,
1919 }
2020}
2121
22- func Err [T , E any ](e E ) Result [T , E ] {
23- return Result [T , E ]{
22+ func Err [T , E any ](e E ) * Result [T , E ] {
23+ return & Result [T , E ]{
2424 err : e ,
2525 ok : false ,
2626 assigned : true ,
@@ -57,7 +57,7 @@ func (r Result[T, E]) IsOk() bool {
5757 return r .ok
5858}
5959
60- func (r Result [T , E ]) IsOkAnd (f func (T ) bool ) bool {
60+ func (r * Result [T , E ]) IsOkAnd (f func (T ) bool ) bool {
6161 if ! r .ok {
6262 return false
6363 }
@@ -68,144 +68,145 @@ func (r Result[T, E]) IsErr() bool {
6868 return ! r .ok
6969}
7070
71- func (r Result [T , E ]) IsErrAnd (f func (E ) bool ) bool {
71+ func (r * Result [T , E ]) IsErrAnd (f func (E ) bool ) bool {
7272 if r .ok {
7373 return false
7474 }
7575 return f (r .err )
7676}
7777
78- func Map [T , E , U any ](r Result [T , E ], f func (T ) U ) Result [U , E ] {
78+ func Map [T , E , U any ](r * Result [T , E ], f func (T ) U ) * Result [U , E ] {
7979 if r .ok {
8080 return Ok [U , E ](f (r .value ))
8181 }
8282 return Err [U , E ](r .err )
8383}
8484
85- func MapOr [T , E , U any ](r Result [T , E ], def U , f func (T ) U ) U {
85+ func MapOr [T , E , U any ](r * Result [T , E ], def U , f func (T ) U ) U {
8686 if r .ok {
8787 return f (r .value )
8888 }
8989 return def
9090}
9191
92- func MapOrElse [T , E , U any ](r Result [T , E ], def func (E ) U , f func (T ) U ) U {
92+ func MapOrElse [T , E , U any ](r * Result [T , E ], def func (E ) U , f func (T ) U ) U {
9393 if r .ok {
9494 return f (r .value )
9595 }
9696 return def (r .err )
9797}
9898
99- func MapOrDefault [T , E , U any ](r Result [T , E ], f func (T ) U ) U {
99+ func MapOrDefault [T , E , U any ](r * Result [T , E ], f func (T ) U ) U {
100100 if r .ok {
101101 return f (r .value )
102102 }
103103 var zero U
104104 return zero
105105}
106106
107- func MapErr [T , E , F any ](r Result [T , E ], f func (E ) F ) Result [T , F ] {
107+ func MapErr [T , E , F any ](r * Result [T , E ], f func (E ) F ) * Result [T , F ] {
108108 if r .ok {
109109 return Ok [T , F ](r .value )
110110 }
111111 return Err [T , F ](f (r .err ))
112112}
113113
114- func (r Result [T , E ]) Inspect (f func (T )) Result [T , E ] {
114+ func (r * Result [T , E ]) Inspect (f func (T )) * Result [T , E ] {
115115 if r .ok {
116116 f (r .value )
117117 }
118118 return r
119119}
120120
121- func (r Result [T , E ]) InspectErr (f func (E )) Result [T , E ] {
121+ func (r * Result [T , E ]) InspectErr (f func (E )) * Result [T , E ] {
122122 if ! r .ok {
123123 f (r .err )
124124 }
125125 return r
126126}
127127
128- func (r Result [T , E ]) Expect (msg string ) T {
128+ func (r * Result [T , E ]) Expect (msg string ) T {
129129 if r .ok {
130130 return r .value
131131 }
132132 panic (fmt .Sprintf ("%s: %v" , msg , r .err ))
133133}
134134
135- func (r Result [T , E ]) Unwrap () T {
135+ func (r * Result [T , E ]) Unwrap () T {
136136 if r .ok {
137137 return r .value
138138 }
139139 panic (fmt .Sprintf ("called Result.Unwrap() on an Err value: %v" , r .err ))
140140}
141141
142- func (r Result [T , E ]) UnwrapOrDefault () T {
142+ func (r * Result [T , E ]) UnwrapOrDefault () T {
143143 if r .ok {
144144 return r .value
145145 }
146146 var zero T
147147 return zero
148148}
149149
150- func (r Result [T , E ]) ExpectErr (msg string ) E {
150+ func (r * Result [T , E ]) ExpectErr (msg string ) E {
151151 if r .ok {
152152 panic (fmt .Sprintf ("%s: %v" , msg , r .value ))
153153 }
154154 return r .err
155155}
156156
157- func (r Result [T , E ]) UnwrapErr () E {
157+ func (r * Result [T , E ]) UnwrapErr () E {
158158 if r .ok {
159159 panic (fmt .Sprintf ("called Result.UnwrapErr() on an Ok value: %v" , r .value ))
160160 }
161161 return r .err
162162}
163163
164- func And [T , E , U any ](r Result [T , E ], res Result [U , E ]) Result [U , E ] {
164+ func And [T , E , U any ](r * Result [T , E ], res * Result [U , E ]) * Result [U , E ] {
165165 if r .ok {
166166 return res
167167 }
168168 return Err [U , E ](r .err )
169169}
170170
171- func AndThen [T , E , U any ](r Result [T , E ], op func (T ) Result [U , E ]) Result [U , E ] {
171+ func AndThen [T , E , U any ](r * Result [T , E ], op func (T ) * Result [U , E ]) * Result [U , E ] {
172172 if r .ok {
173173 return op (r .value )
174174 }
175175 return Err [U , E ](r .err )
176176}
177177
178- func Or [T , E , F any ](r Result [T , E ], res Result [T , F ]) Result [T , F ] {
178+ func Or [T , E , F any ](r * Result [T , E ], res * Result [T , F ]) * Result [T , F ] {
179179 if r .ok {
180180 return Ok [T , F ](r .value )
181181 }
182182 return res
183183}
184184
185- func OrElse [T , E , F any ](r Result [T , E ], op func (E ) Result [T , F ]) Result [T , F ] {
185+ func OrElse [T , E , F any ](r * Result [T , E ], op func (E ) * Result [T , F ]) * Result [T , F ] {
186186 if r .ok {
187187 return Ok [T , F ](r .value )
188188 }
189189 return op (r .err )
190190}
191191
192- func Try [T , E , U , F any ](r Result [T , E ], op func (T ) U , closure func (E ) Result [U , F ]) Result [U , F ] {
192+ func Try [T , E , U , F any ](r * Result [T , E ], op func (T ) U , closure func (E ) * Result [U , F ]) * Result [U , F ] {
193193 if r .ok {
194194 return Ok [U , F ](op (r .value ))
195195 }
196196 closure (r .err )
197197 // unreachable
198+ fmt .Println ("Result unreachable" )
198199 return closure (r .err )
199200}
200201
201- func (r Result [T , E ]) UnwrapOr (def T ) T {
202+ func (r * Result [T , E ]) UnwrapOr (def T ) T {
202203 if r .ok {
203204 return r .value
204205 }
205206 return def
206207}
207208
208- func (r Result [T , E ]) UnwrapOrElse (f func (E ) T ) T {
209+ func (r * Result [T , E ]) UnwrapOrElse (f func (E ) T ) T {
209210 if r .ok {
210211 return r .value
211212 }
0 commit comments