InputRange for data structure without order?
Andy Valencia
dont at spam.me
Wed Jun 4 03:39:35 UTC 2025
On Wednesday, 4 June 2025 at 02:11:18 UTC, H. S. Teoh wrote:
> The correct way to do this is to create a method in the
> container that returns a range over its contents. Popping the
> range should NOT mutate the container. It should be regarded
> as something separate from the container. Only then will you
> get sane semantics. Trying to conflate an unordered container
> with a range will only lead to pain and bugs.
So, concretely, my container has an opApply method, and because
of that foreach works to iterate its contents. Imagine that I
now want to chain() across several of these, along the lines of:
```d
foreach(val; s1) {
...;
}
// But now:
foreach(val; chain(s1, s2, s3)) {
...;
}
```
What API do I add to my container so that chain will do its
magic? I don't see the infrastructure under std.range.chain
using it. Or is there a non-Range chain I haven't found yet?
Thank you again,
Andy
More information about the Digitalmars-d-learn
mailing list