result.go 424 B

12345678910111213141516171819202122232425262728293031
  1. package generics
  2. type Result[T any] struct {
  3. Ok T
  4. Err error
  5. }
  6. func ResultFromTuple[T any](t T, err error) Result[T] {
  7. return Result[T]{
  8. Ok: t,
  9. Err: err,
  10. }
  11. }
  12. func (r Result[T]) AsTuple() (T, error) {
  13. return r.Ok, r.Err
  14. }
  15. func (r Result[T]) Unwrap() T {
  16. if r.Err != nil {
  17. panic(r.Err)
  18. }
  19. return r.Ok
  20. }
  21. func (r Result[T]) ToOption() Option[T] {
  22. return Option[T]{
  23. Ok: r.Err == nil,
  24. Value: r.Ok,
  25. }
  26. }