103 lines
2.8 KiB
C#
103 lines
2.8 KiB
C#
using MaybeError.Errors;
|
|
|
|
namespace MaybeError;
|
|
|
|
public static class MaybeExtensions
|
|
{
|
|
public static T ValueOrDefault<T, E>(this IValueMaybe<T, E> maybe, T defaultValue) where T : struct where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return defaultValue;
|
|
return maybe.Value;
|
|
}
|
|
|
|
public static T? ValueOrDefault<T, E>(this IValueMaybe<T, E> maybe) where T : struct where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return default;
|
|
return maybe.Value;
|
|
}
|
|
|
|
public static R As<R, T, E>(this IValueMaybe<T, E> maybe, Func<T, R> predicate) where T : struct where E : Error
|
|
{
|
|
return predicate(maybe.Value);
|
|
}
|
|
|
|
public static R? AsOrDefault<R, T, E>(this IValueMaybe<T, E> maybe, Func<T, R> predicate) where T : struct where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return default;
|
|
return predicate(maybe.Value);
|
|
}
|
|
|
|
public static R AsOrDefault<R, T, E>(this IValueMaybe<T, E> maybe, Func<T, R> predicate, R defaultValue) where T : struct where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return defaultValue;
|
|
return predicate(maybe.Value);
|
|
}
|
|
|
|
public static ValueMaybe<T2, E> Map<T, T2, E>(this IValueMaybe<T, E> maybe, Func<T, T2> map) where T : struct where T2 : struct where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return maybe.Error;
|
|
return map(maybe.Value);
|
|
}
|
|
|
|
public static ValueMaybe<T, E2> MapError<T, E, E2>(this IValueMaybe<T, E> maybe, Func<E, E2> map) where T : struct where E : Error where E2 : Error
|
|
{
|
|
if (!maybe.HasError)
|
|
return maybe.Value;
|
|
return map(maybe.Error);
|
|
}
|
|
|
|
|
|
public static T ValueOrDefault<T, E>(this IMaybe<T, E> maybe, T defaultValue) where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return defaultValue;
|
|
return maybe.Value;
|
|
}
|
|
|
|
public static T? ValueOrDefault<T, E>(this IMaybe<T, E> maybe) where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return default;
|
|
return maybe.Value;
|
|
}
|
|
|
|
public static R As<R, T, E>(this IMaybe<T, E> maybe, Func<T, R> predicate) where E : Error
|
|
{
|
|
return predicate(maybe.Value);
|
|
}
|
|
|
|
public static R? AsOrDefault<R, T, E>(this IMaybe<T, E> maybe, Func<T, R> predicate) where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return default;
|
|
return predicate(maybe.Value);
|
|
}
|
|
|
|
public static R AsOrDefault<R, T, E>(this IMaybe<T, E> maybe, Func<T, R> predicate, R defaultValue) where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return defaultValue;
|
|
return predicate(maybe.Value);
|
|
}
|
|
|
|
public static Maybe<T2, E> Map<T, T2, E>(this IMaybe<T, E> maybe, Func<T, T2> map) where E : Error
|
|
{
|
|
if (maybe.HasError)
|
|
return maybe.Error;
|
|
return map(maybe.Value);
|
|
}
|
|
|
|
public static Maybe<T, E2> MapError<T, E, E2>(this IMaybe<T, E> maybe, Func<E, E2> map) where E : Error where E2 : Error
|
|
{
|
|
if (!maybe.HasError)
|
|
return maybe.Value;
|
|
return map(maybe.Error);
|
|
}
|
|
|
|
}
|