[Issue 24570] printing a range of ranges consumes sub-ranges
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue May 28 06:05:31 UTC 2024
https://issues.dlang.org/show_bug.cgi?id=24570
Salih Dincer <salihdb at hotmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |salihdb at hotmail.com
--- Comment #2 from Salih Dincer <salihdb at hotmail.com> ---
(In reply to Steven Schveighoffer from comment #1)
> A further note is that an array of arrays is not consumed when printed --
> because formatValue has a specialized case for that.
If you do the following instead of `auto save() => return this;`, the problem
is solved:
```
struct R
{
wchar* ptr;
size_t len;
this(T)(T[] range)
{
ptr = cast(wchar*)range.ptr;
len = range.length;
}
auto empty() => len == 0;
auto front() => *ptr++;
auto popFront() => len--;
auto save()
{
auto r = R([]);
r.len = len;
r.ptr = ptr;
return r;
}
}
void main()
{
auto c = ['€', '₺', '₽'];
auto r = R(c);
auto arr = [r, r, r];
assert(!arr.empty);
import std.conv : text;
auto str = arr.text; // "€₺₽"
assert(!arr.empty);
}
```
--
More information about the Digitalmars-d-bugs
mailing list