On 12/19/18 12:20 PM, H. S. Teoh wrote:
On Wed, Dec 19, 2018 at 10:38:06AM -0500, Steven Schveighoffer via
Digitalmars-d-learn wrote:
[...]
Looking at the code for chunkBy, it seems to me that the
implementation is quite complex for what in my head should be a simple
wrapper...
[...]
It was originally a simple wrapper when I first submitted it, but Andrei
requested to use RefCounted in order to work around the subrange
traversal problem. I.e., in the original implementation, the underlying
range traversed twice, once when each subrange is consumed, and once
when you call popFront on the outer range. Having RefCounted allows us
to retain a reference to the original range so that subranges will also
advance the underlying range as seen by the outer range, thereby
eliminating calling popFront on the underlying range twice per element.
I see, that does pose an issue, especially if you aren't traversing it
in order. Communicating back to the "outer" range where the traversal
should stop requires having a reference to it in the subrange.
However, in terms of a random-access range, or even an array, it should
be pretty straightforward to... oh wait, these are narrow strings.
nevermind.
-Steve