Files
2026-07-18 17:05:03 +02:00

33 lines
781 B
C#

using System.Collections.Generic;
namespace GodotHostTest.AetherBind;
public static class EnumerableExtensions
{
public enum SingleFailureReason
{
LessThanOne,
MoreThanOne
}
public static T? Single<T>(this IEnumerable<T> enumerable, out SingleFailureReason? failureReason)
where T : class
{
using var enumerator = enumerable.GetEnumerator();
if (!enumerator.MoveNext())
{
failureReason = SingleFailureReason.LessThanOne;
return null;
}
var value = enumerator.Current;
if (enumerator.MoveNext())
{
failureReason = SingleFailureReason.MoreThanOne;
return null;
}
failureReason = null;
return value;
}
}