rotate left an array
Ali Çehreli
acehreli at yahoo.com
Tue Oct 4 00:38:25 UTC 2022
On 10/3/22 17:00, Paul Backus wrote:
> On Monday, 3 October 2022 at 21:06:36 UTC, Ali Çehreli wrote:
>> On 10/3/22 13:48, Andrey Zherikov wrote:
>>> a "rotated view".
>>
>> Without indexes:
>>
>> import std.range : empty;
>>
>> auto rotatedView(R)(R range)
>> in (!range.empty)
>> {
>> import std.range : chain, front, only, popFront;
>> const fr = range.front;
>> range.popFront();
>> return chain(range, only(fr));
>> }
>
> Tiny nitpick: this should use
>
> const fr = range.save.front;
>
> ...to ensure that `fr` is not invaliated or overwritten by the
> subsequent call to range.popFront (e.g., think of File.byLine here).
Good catch but I think what we want is a copy of the front element, at
least for InputRanges (.save does not work for File.byLine :/).
What is the generic way of copying an element? I wonder whether we have
to use isSomeString to take care of all element types.
Ali
More information about the Digitalmars-d-learn
mailing list