[Issue 23453] New: Generic iota should be a forward range
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Nov 3 11:57:48 UTC 2022
https://issues.dlang.org/show_bug.cgi?id=23453
Issue ID: 23453
Summary: Generic iota should be a forward range
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: phobos
Assignee: nobody at puremagic.com
Reporter: snarwin+bugzilla at gmail.com
As of Phobos v2.100.2, the generic version of std.range.iota used for
non-numeric types is not a forward range, because it does not implement the
`save` method:
---
import std.range;
void main()
{
auto r1 = iota('a', 'z');
auto r2 = r1.save; // Error
}
---
However, iota stores all of its state internally, and copies of it can be
iterated independently:
---
import std.range;
void main()
{
auto r1 = iota('a', 'z');
auto r2 = r1;
r1.popFront;
assert(r2.front == 'a'); // OK
}
---
Since it is already effectively a forward range in practice, iota should
implement `save` and make this functionality available to generic algorithms.
--
More information about the Digitalmars-d-bugs
mailing list