diff --git a/Funcky/Extensions/EnumeratorExtensions.cs b/Funcky/Extensions/EnumeratorExtensions.cs new file mode 100644 index 00000000..05db4e63 --- /dev/null +++ b/Funcky/Extensions/EnumeratorExtensions.cs @@ -0,0 +1,12 @@ +namespace Funcky.Extensions; + +public static class EnumeratorExtensions +{ + /// Advances the enumerator and returns Some with new element of enumeration + /// or if no more elements are available. + public static Option MoveNextOrNone(this IEnumerator enumerator) + where T : notnull + => enumerator.MoveNext() + ? enumerator.Current + : Option.None; +} diff --git a/Funcky/PublicAPI.Unshipped.txt b/Funcky/PublicAPI.Unshipped.txt index ec095891..b6f13844 100644 --- a/Funcky/PublicAPI.Unshipped.txt +++ b/Funcky/PublicAPI.Unshipped.txt @@ -1,4 +1,5 @@ #nullable enable +Funcky.Extensions.EnumeratorExtensions Funcky.Monads.Either.InspectLeft(System.Action! inspector) -> Funcky.Monads.Either Funcky.Monads.Either.OrElse(Funcky.Monads.Either fallback) -> Funcky.Monads.Either Funcky.Monads.Either.OrElse(System.Func>! fallback) -> Funcky.Monads.Either @@ -8,3 +9,4 @@ Funcky.Monads.Result.GetOrElse(TValidResult fallback) -> TValidRes Funcky.Monads.Result.InspectError(System.Action! inspector) -> Funcky.Monads.Result Funcky.Monads.Result.OrElse(Funcky.Monads.Result fallback) -> Funcky.Monads.Result Funcky.Monads.Result.OrElse(System.Func>! fallback) -> Funcky.Monads.Result +static Funcky.Extensions.EnumeratorExtensions.MoveNextOrNone(this System.Collections.Generic.IEnumerator! enumerator) -> Funcky.Monads.Option