32 lines
424 B
Go
32 lines
424 B
Go
package generics
|
|
|
|
type Result[T any] struct {
|
|
Ok T
|
|
Err error
|
|
}
|
|
|
|
func ResultFromTuple[T any](t T, err error) Result[T] {
|
|
return Result[T]{
|
|
Ok: t,
|
|
Err: err,
|
|
}
|
|
}
|
|
|
|
func (r Result[T]) AsTuple() (T, error) {
|
|
return r.Ok, r.Err
|
|
}
|
|
|
|
func (r Result[T]) Unwrap() T {
|
|
if r.Err != nil {
|
|
panic(r.Err)
|
|
}
|
|
return r.Ok
|
|
}
|
|
|
|
func (r Result[T]) ToOption() Option[T] {
|
|
return Option[T]{
|
|
Ok: r.Err == nil,
|
|
Value: r.Ok,
|
|
}
|
|
}
|