Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Utils/Result.cs
T
2022-02-26 02:43:01 +09:00

44 lines
1.0 KiB
C#

#nullable enable
namespace Barotrauma
{
public abstract class Result<T, TError>
where T: notnull
where TError: notnull
{
public abstract bool IsSuccess { get; }
public bool IsFailure => !IsSuccess;
public static Success<T, TError> Success(T value)
=> new Success<T, TError>(value);
public static Failure<T, TError> Failure(TError error)
=> new Failure<T, TError>(error);
}
public sealed class Success<T, TError> : Result<T, TError>
where T: notnull
where TError: notnull
{
public readonly T Value;
public override bool IsSuccess => true;
public Success(T value)
{
Value = value;
}
}
public sealed class Failure<T, TError> : Result<T, TError>
where T: notnull
where TError: notnull
{
public readonly TError Error;
public override bool IsSuccess => false;
public Failure(TError error)
{
Error = error;
}
}
}