public static IEnumerator <V> Create <V>(IEnumerator <V> source, out IEnumerator <V> destination) { var capture = new CaptureHolder <V>(); destination = capture.Enumerator; return(CaptureEnumerator(source, capture)); }
static IEnumerator <V> CaptureEnumerator <V>(IEnumerator <V> source, CaptureHolder <V> capture) { while (source.MoveNext()) { var val = source.Current; capture.Value = val; yield return(val); } }