|
@@ -0,0 +1,52 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Diagnostics.CodeAnalysis;
|
|
|
+using System.Text;
|
|
|
+
|
|
|
+namespace InABox.Core
|
|
|
+{
|
|
|
+ public static class Result
|
|
|
+ {
|
|
|
+ public static Result<T, E> Ok<T, E>(T value)
|
|
|
+ {
|
|
|
+ return new Result<T, E>(value);
|
|
|
+ }
|
|
|
+ public static Result<T, E> Error<T, E>(E error)
|
|
|
+ {
|
|
|
+ return new Result<T, E>(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public class Result<T, E>
|
|
|
+ {
|
|
|
+ public enum Status
|
|
|
+ {
|
|
|
+ Ok,
|
|
|
+ Error
|
|
|
+ }
|
|
|
+
|
|
|
+ private T _value;
|
|
|
+ private E _error;
|
|
|
+ private Status _status;
|
|
|
+
|
|
|
+ public Result(T value)
|
|
|
+ {
|
|
|
+ _value = value;
|
|
|
+ _error = default;
|
|
|
+ _status = Status.Ok;
|
|
|
+ }
|
|
|
+ public Result(E error)
|
|
|
+ {
|
|
|
+ _value = default;
|
|
|
+ _error = error;
|
|
|
+ _status = Status.Error;
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool Get([NotNullWhen(true)][MaybeNull] out T value, [NotNullWhen(false)][MaybeNull] out E error)
|
|
|
+ {
|
|
|
+ value = _value;
|
|
|
+ error = _error;
|
|
|
+ return _status == Status.Ok;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|