This commit is contained in:
Dan Clark
2024-11-24 16:35:00 +00:00
parent 911ed375b4
commit d893335195
18 changed files with 282 additions and 200 deletions
+16 -10
View File
@@ -8,26 +8,32 @@ public record Result<TValue> :
protected internal Result(TValue? value, bool isSuccess, Error error)
: base(isSuccess, error) => this.value = value;
public TValue? Value => IsSuccess ? value! : default;
public TValue? Value =>
IsSuccess ? value! : default;
public static implicit operator Result<TValue>(TValue? value) => Create(value);
public static implicit operator Result<TValue>(TValue? value) =>
Create(value);
}
public record Result(bool IsSuccess, Error Error)
public record Result(bool IsSuccess,
Error Error)
{
public bool IsFailure => !IsSuccess;
public static Result Success() => new(true, Error.None);
public static Result<TValue> Success<TValue>(TValue value) => new(value, true, Error.None);
public static Result<TValue> Success<TValue>(TValue value) =>
new(value, true, Error.None);
public static Result Failure(Error error) => new(false, error);
public static Result Failure(Error error) =>
new(false, error);
public static Result<TValue> Failure<TValue>(Error error) => new(default, false, error);
public static Result<TValue> Failure<TValue>(Error error) =>
new(default, false, error);
public static Result Create(bool condition) => condition ? Success() : Failure(Error.ConditionNotMet);
public static Result<TValue> Create<TValue>(TValue? value) => value is not null ? Success(value) : Failure<TValue>(Error.Null);
public static Result Create(bool condition) =>
condition ? Success() : Failure(Error.ConditionNotMet);
public static Result<TValue> Create<TValue>(TValue? value) =>
value is not null ? Success(value) : Failure<TValue>(Error.Null);
}