private static void Skip(ref IEnumerableContext <T> context, out Option <T> next) { context.bd.DetectBacktrack(); if (context.enumerator.MoveNext()) { next = new Option <T>(context.enumerator.Current); } else { next = new Option <T>(); context.bd.Release(); context.enumerator.Dispose(); } }
private static void Dispose(ref IEnumerableContext <T> context, out Option <T> next) { next = new Option <T>(); context.bd.Release(); context.enumerator.Dispose(); }
private static void Remove(ref IEnumerableContext <T> context, out Option <T> next) { throw new NotSupportedException(); }