added Extend extension methods generation
All checks were successful
.NET Test / test (push) Successful in 1m56s
.NET Publish / publish (push) Successful in 1m6s

This commit is contained in:
2024-04-08 22:46:34 +04:00
parent 9c9b734c51
commit dd81fecdd6
8 changed files with 235 additions and 20 deletions

View File

@@ -7,7 +7,13 @@ internal enum ResultState : byte
public readonly partial struct Result : IEquatable<Result>
{
internal SuccessUnit Value => new();
[SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Simplified source generation")]
internal SuccessUnit Value
{
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
get => new();
}
internal readonly Error? Error;
internal readonly ResultState State;
@@ -36,12 +42,18 @@ public readonly partial struct Result : IEquatable<Result>
public static Result<(T1, T2, T3, T4, T5)> Success<T1, T2, T3, T4, T5>(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) => new((value1, value2, value3, value4, value5));
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Result Failure(string error) => Error.New(error ?? throw new ArgumentNullException(nameof(error)));
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Result Failure(Error error) => new(error ?? throw new ArgumentNullException(nameof(error)));
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Result Failure(Exception exception) => new(Error.New(exception) ?? throw new ArgumentNullException(nameof(exception)));
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Result<T> Failure<T>(string error) => Error.New(error ?? throw new ArgumentNullException(nameof(error)));
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Result<T> Failure<T>(Error error) => new(error ?? throw new ArgumentNullException(nameof(error)));
@@ -66,13 +78,13 @@ public readonly partial struct Result : IEquatable<Result>
[Pure] public bool IsSuccess => Error is null;
[Pure] public bool IsFailure => Error is not null;
[Pure] public bool Success([MaybeNullWhen(false)]out SuccessUnit? u, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
[Pure] public bool TryGetValue([MaybeNullWhen(false)]out SuccessUnit? u, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
{
switch (State)
{
case ResultState.Success:
u = new SuccessUnit();
error = default;
error = null;
return true;
case ResultState.Error:
@@ -161,13 +173,13 @@ public readonly struct Result<T> : IEquatable<Result<T>>
[Pure] public bool IsSuccess => State == ResultState.Success;
[Pure] public bool IsFailure => State == ResultState.Error;
[Pure] public bool Success([MaybeNullWhen(false)]out T value, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
[Pure] public bool TryGetValue([MaybeNullWhen(false)]out T value, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
{
switch (State)
{
case ResultState.Success:
value = Value;
error = default;
error = null;
return true;
case ResultState.Error: