fix: correct implementation of FirstOrEmpty
This commit is contained in:
parent
cdcfd671f0
commit
5981dd081d
|
@ -2,8 +2,21 @@
|
|||
|
||||
public static class MaybeExtensions
|
||||
{
|
||||
public static Maybe<T> FirstOrEmpty<T>(this IEnumerable<T> col) =>
|
||||
col.FirstOrDefault() ?? Maybe<T>.Empty();
|
||||
public static Maybe<T> FirstOrEmpty<T>(this IEnumerable<T> collection)
|
||||
{
|
||||
using var enumerator = collection.GetEnumerator();
|
||||
|
||||
return !enumerator.MoveNext() ? Maybe<T>.Empty() : enumerator.Current;
|
||||
}
|
||||
|
||||
public static Maybe<T> FirstOrEmpty<T>(this IEnumerable<T> collection, Func<T, bool> pred)
|
||||
{
|
||||
foreach (var item in collection)
|
||||
if (pred(item))
|
||||
return item;
|
||||
|
||||
return Maybe<T>.Empty();
|
||||
}
|
||||
|
||||
public static T? ToNullable<T>(this Maybe<T> item) where T : struct =>
|
||||
item.HasValue ? item.Value : null;
|
||||
|
|
Loading…
Reference in New Issue
Block a user