// using System.Diagnostics.CodeAnalysis; // namespace SJK.Functional; // public interface IResult // { // bool Ok {get;} // bool Error {get;} // } // public interface IResult : IResult // { // } // public interface IResult : IResult; // public readonly struct Result : IResult // { // private readonly bool _isSuccess; // public readonly bool Ok =>_isSuccess; // public readonly bool Error =>!_isSuccess; // } // public readonly struct Result : IResult // { // readonly private TSuccess _success; // private readonly bool _isSuccess; // [MemberNotNullWhen(true,nameof(_success))] // public readonly bool Ok =>_isSuccess; // [MemberNotNullWhen(false,nameof(_success))] // public readonly bool Error =>!_isSuccess; // public readonly TResult Match(Func success, Func error) // => Ok?success(_success):error(); // } // public readonly struct Result : IResult // { // private readonly TSuccess? _success; // private readonly TError? _error; // private readonly bool _isSuccess; // [MemberNotNullWhen(true,nameof(_success))] // [MemberNotNullWhen(false,nameof(_error))] // public readonly bool Ok =>_isSuccess; // [MemberNotNullWhen(true,nameof(_error))] // [MemberNotNullWhen(false,nameof(_success))] // public readonly bool Error =>!_isSuccess; // public readonly TResult Match(Func success, Func error) // => Ok?success(_success):error(_error); // }