November 03, 2022 [Issue 23453] New: Generic iota should be a forward range | ||||
|---|---|---|---|---|
| ||||
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@puremagic.com Reporter: snarwin+bugzilla@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. -- | ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply