On 6/3/25 9:03 AM, Andy Valencia wrote:
> I have a Set data structure which has no concept of order; its members
> are stored and can be searched efficiently based on their hash.
>
> I have a situation where chain()'ing them together would be convenient,
> but InputRange requires front() and popFront(). There really _isn't_ a
> front

front() does not imply an order. It will work as long as you can provide the elements in a sequence. The built-in associative array feature is an example:

import std.stdio;
import std.range;

void main() {
    int[int] squares;
    foreach (i; 0 .. 10) {
        squares[i] = i * i;
    }

    writeln("keys  : ", squares.byKey);
    writeln("values: ", squares.byValue);
}

The elements are not in any particular order, yet associative arrays provide InputRanges (byKey and byValue return InputRange objects.):

keys  : [0, 6, 7, 2, 3, 1, 8, 5, 4, 9]
values: [0, 36, 49, 4, 9, 1, 64, 25, 16, 81]

Ali

Reply via email to