Result.hx 781 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package eval.luv;
  2. /**
  3. Outcome of an operation.
  4. **/
  5. @:using(eval.luv.Result.ResultTools)
  6. enum Result<T> {
  7. /** Operation completed successfully. **/
  8. Ok(value:T);
  9. /** Operation failed. **/
  10. Error(e:UVError);
  11. }
  12. enum abstract NoData(Dynamic) {
  13. var NoData = null;
  14. }
  15. class ResultTools {
  16. /**
  17. Returns the result value on success or throws `eval.luv.LuvException`
  18. on failure.
  19. **/
  20. static public inline function resolve<T>(result:Result<T>):T {
  21. switch result {
  22. case Ok(v): return v;
  23. case Error(e): throw new LuvException(e);
  24. }
  25. }
  26. /**
  27. Returns `true` if the result is `Ok`.
  28. Returns `false` if the result is `Error`.
  29. **/
  30. static public inline function isOk<T>(result:Result<T>):Bool {
  31. return switch result {
  32. case Ok(_): true;
  33. case Error(_): false;
  34. }
  35. }
  36. }