The use of buffering on Repeat() and Cartesian() is currently commented as a
TODO. The attached patch:
1. Implements a buffering class that buffers enumerables in memory.
2. Changes Repeat() and Cartesian to use this buffering.
3. Further changes Repeat() to skip this if the count is 0 or 1.
4. Defines an IBufferedEnumerable<T> interfaces, documented as adding a
buffering guarantee to IEnumerable<T>.
5. Defines two overloads of a method to create such a buffered instance. One of
which insists that buffering happen even if the source implements
ICollection<T>. (Otherwise it is assumed that the source already serves as a
buffer adequately).
In short: Deals with the two TODO items, and brings the advantage of the code
needed to do so, to the user.
Original issue reported on code.google.com by j...@hackcraft.net on 12 Dec 2013 at 2:46
Original issue reported on code.google.com by
j...@hackcraft.net
on 12 Dec 2013 at 2:46Attachments: